当前位置:   article > 正文

python类/对象/方法_python中self在类中的意义

python中self在类中的意义

一、类定义

这里举例说明一下:

人就是一种类,人有名字,身高,体重等属性,不同人这些属性都是不一样的,除此之外,人还有很多方法(功能),例如,思考、跑步、睡觉等等。

在Python中,类表示具有相同属性和方法的对象的集合。在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问类中的属性和方法了。

二、创建类

格式:

class  Animal:
    def __init__(self):#类的方法和普通的方法唯一的区别是:类中定义的方法必须至少带一个self参数,而普通的方法中可以没有任何参数
        print("类属性")
    def show(self):
        print("类方法")
  • 1
  • 2
  • 3
  • 4
  • 5

举例说明:

class MyClass:   #类的首字母要大写
    def __init__(self,x): # x为类的属性变量
        self.x = x   #定义类的属性
  • 1
  • 2
  • 3

三、__init__() 函数

类有一个名为 __init__() 初始化函数,用来定义类的属性,它将类的属性赋值给对象,或者授予对象时需要执行的其他操作,它始终在启动类时执行。

class MyClass:
    def __init__(self,x):  # x为类的属性变量
        self.x = x  #定义类的属性
  • 1
  • 2
  • 3

在 Python 中,如果你定义一个类但没有定义任何类属性,这也是完全合法的。类属性是与类本身关联的变量,而不是与类的实例关联的变量。如果你的类不需要任何类属性,你可以直接定义类的方法,而不用去定义__init__() 的初始化函数

如:

class MyClass:
    def my_method(self,arg3,arg4):  #定义类的方法
        print(self.arg3, self.arg4)

# 创建类的实例
my_object = MyClass() #实例化一个对象,继承类的属性

# 调用类中的方法
my_object.my_method(self.arg3对应的实参3,self.arg4对应的实参4) #类实例关联的变量实参
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

四、self 参数

  • self 参数是对类的当前实例的引用,用于访问属于该类的变量。也即self表示创建的类实例本身,而不是类本身。

  • 它的名称是约定俗成的,为了规范和便于读者理解,推荐使用self,也可以命名为其它的而不被命名为 self。

  • 它必须是类中任意函数的首个参数。

  • self只有在类的方法中才会有,其他函数或方法是不必带self的。类的方法和普通的方法唯一的区别是:类中定义的方法必须至少带一个self参数,而普通的方法中可以没有任何参数

如:使用myself替换self

class MyClass:
    def __init__(myself,x):
        myself.x = x
  • 1
  • 2
  • 3

五、给类实例化一个对象

class MyClass:
    def __init__(self,x):
        self.x = x

p1 = MyClass(7)
  • 1
  • 2
  • 3
  • 4
  • 5

修改对象属性

p1.x = 40
  • 1

六、pass 语句

类定义不能为空,但是因为某种原因写了无内容的类定义语句,可使用 pass 语句来避免报错。

class Person:
  pass
  • 1
  • 2

七、类的继承

继承允许我们定义一个类继承另一个类的所有方法和属性。

语法格式:

class 子类名(父类名):
	类的属性
	类的方法
  • 1
  • 2
  • 3

举例说明:

class  Animal:
    def __init__(self):
        print("父类属性")
    def show(self):
        print("父类方法")

class Fish(Animal):
    def __init__(self):   #当子类添加 __init__() 函数时,子类将不再继承父的 __init__() 函数
        print("子类属性")
    def run(self):
        print("子类方法")

fish = Fish()
fish.run()   #子类方法
fish.show()  #父类方法
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

输出:
子类属性
子类方法
父类方法

八、怎样调用类中的方法

在 Python 中,可以使用类名加点的方式调用类中的方法。具体示例如下:

class MyClass:
    def __init__(self, arg1, arg2):  #定义类的属性
        self.arg1 = arg1
        self.arg2 = arg2

    def my_method(self,arg3,arg4):  #定义类的方法
        print(self.arg3, self.arg4)

# 创建类的实例
my_object = MyClass(self.arg1对应的实参1', 'self.arg2对应的实参2) #实例化一个对象,它拥有类的属性arg1,arg2,注意类属性是与类本身关联的变量,而不是与类的实例关联的变量。

# 类实例调用类中的方法
my_object.my_method(self.arg3对应的实参3,self.arg4对应的实参4)  #实参3,实参4为类实例关联的变量实参
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在上述代码中,首先定义了一个名为MyClass的类,它包含一个构造函数__init__和一个名为my_method的方法。然后,创建了一个MyClass的实例my_object,并使用实例名加点的方式调用了类中的my_method方法

demo1:类有属性

#coding=utf-8

class Aclass:
    def __init__(self,x,y):
        self.x=x
        self.y=y
    def minus1(self,a,b):
        print(a - b)

my_result = Aclass(2,1)  #实例my_result拥有类的属性2、1
my_result.minus1(5,1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

输出:4

demo2:类没有属性

#coding=utf-8

class Aclass:
    def minus1(self,a,b):
        print(a - b)

my_result = Aclass()
my_result.minus1(5,1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输出:4

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号