1.self用法
在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。
在python中,类是通过关键字 class 定义的:
1、class 后面紧跟类名,紧接着是(object),表示该类是从哪个类继承下来的,通常,如果没有合适的继承类,就使用 object 类,这是所有类最终都会继承的类。
class Person(object): pass
2、将 Person类实例化,创建实例化是通过 类名+() 实现的
class Person(object): pass student = Person() # 创建类的实例化 print(student) print(Person)
3、给实例变量绑定属性
class Person(object): pass student = Person() # print(student) # print(Person) student.name = "Gavin" # 为实例变量 student 绑定 name 属性,类似于赋值操作 student.sex = 男 # 为其绑定 score 属性 print(student.name) print(student.sex)
上述的方法虽然可以为类的实例变量绑定属性,但是不够方便。
由于类 可以起到模板的作用,所以在创建实例的时候,可以将我们认为必须绑定得属性强制填写进去,在python中,是通过类中通常都会使用的一个方法,即def __init__(self)方法,在创建实例变量的时候,就把 name 和 sex等属性绑上去。传入空参数的情况,会报错。
class Person(object): def __init__(self,name,sex): self.name = name self.sex = sex student = Person('Gavin',男) # 传入 __init__ 方法中需要的参数 print(student.name) print(student.sex)
注意⚠️
1、__init__方法的第一个参数永远是 self ,表示创建的实例本身,因此,在 __init__方法的内部,就可以把各种属性绑定到 self,因为 self 就指向创建的实例本身。
2、使用了 __init__方法,在创建实例的时候就不能传入空的参数了,必须传入与 __init__方法匹配的参数,但是 self 不需要传,python解释器会自己把实例变量传进去。
class Person(object): def __init__(self,x,y): self.x = x self.y = y def add(self): sum = self.x + self.y return sum def square(self): squr = pow(self.x,2)+pow(self.y,2) return squr def add_square(self): c = self.add()+self.square() return c student = Person(3,4) print(student.add()) print(student.square()) print(student.add_square())
通过上述的例子可以看出,与普通的函数相比,在类中定义的函数只有两点不同:
1、第一个参数永远是 self ,并且调用时不用传递该参数,
2、在类中函数相互调用要加 self ,如上例中: c = self.add()+self.square(), 不加 self ,会报错。
2.__init__()函数
关于__init__()函数,其本身是python的构造方法。这个函数类似init()初始化方法,来初始化新创建对象的状态,在一个对象被创建以后会立即调用。
1、首先说一下,带有两个下划线开头的函数是声明该属性为私有,不能在类地外部被使用或直接访问。
2、init函数(方法)支持带参数的类的初始化 ,也可为声明该类的属性。
3、init函数(方法)的第一个参数必须是self(self为习惯用法,也可以用别的名字),后续参数则可以自由指定,和定义函数没有任何区别。
🌟python 中带下划线的变量和函数的意义🌟
1. 前带_的变量: 标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量
2. 前带两个_ ,后带两个_ 的变量: 标明是内置变量,
3. 大写加下划线的变量: 标明是 不会发生改变的全局变量
函数:
1. 前带_的变量: 标明是一个私有函数, 只用于标明,
2. 前带两个_ ,后带两个_ 的函数: 标明是特殊函数。
def __len__(self): return self.path.shape[0]
3. super() 函数
super() 函数是用于调用父类(超类)的一个方法,用来解决多重继承问题。
class A: def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super().add(x) b = B() b.add(2) # 3
class Dog(Animal): def greet(self): super(Dog, self).greet() #调用父类Animal的greet方法 print('WangWang...')