一、为什么一定要定义_init_()方法,先来看看定义和不定义的区别:
1.c是C的实例化对象,如果有_init_()方法先调用C的。
class A:
def __init__(self):
print("math")
class B:
def __init__(self):
print("hello")
class C(A,B):
def __init__(self):
print("world")
def get(self):
print("得到方法")
c=C() #注意括号,要记得加括号,实例化时就会调用本身的方法
2.c是C的实例化对象,如果C中没有_init_()方法调用父类的。
若C(A,B)则调用A的,若C(B,A)则调用B的
class A:
def __init__(self):
print("math")
class B:
def __init__(self):
print("hello")
class C(A,B):
#def __init__(self):
# print("world")
def get(self):
print("得到方法")
c=C() #注意括号,要记得加括号,实例化时就会调用本身的方法
3.若A,B,C中都没有该函数,就没有输出。
class A:
def a(self):
print("math")
class B:
def b(self):
print("hello")
class C(A,B):
#def __init__(self):
# print("world")
def get(self):
print("得到方法")
c=C() #注意括号,要记得加括号,实例化时就会调用本身的方法
print('都没有')
4.在类中__init__()函数叫构造函数,又叫构造方法,也可以叫初始化函数。它的作用就是初始化实例时,初始化传入实例的的默认值。如果不写__init__(),就会调用的默认为空的__init__(),说白了,这个方法不管你写不写,都会调用,而且,一旦实例化就会调用。
注意:“__init__
”前后分别有两个下划线!!!
注意到__init__
方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__
方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
有了__init__
方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__
方法匹配的参数,但self不需要传。
class Student():
def __init__(self, name, score):
self.name=name
self.score=score
bart = Student('Bart Simpson', 59)
print(bart.name)
print(bart.score)
和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。