构造函数 :在实例化类时做一些初始化的工作
析构函数:在实例释放或销毁的时候,做一些收尾工作,例如关闭一些数据库连接、文件等。
继承与多态
class People(object): #经典类写法 n = 123 #类变量 def __init__(self,name,age): self.name = name self.age = age self.friends = [] def eat(self): print("%s is eating..."%self.name) class Relation: #新式类写法 def make_friends(self,obj): print("%s is making friends with %s"%(self.name,obj.name)) self.friends.append(obj) #写obj而不是obj.name的原因是即使name改名了也能一致 class Man(People,Relation): def __init__(self,name,age,money): #构造函数, #People.__init__(self,name,age) #Relationship.__init__(self,name,age) 经典类写法 super().__init__(name,age) '''新式类写法,相比旧式类好处是多继承时旧式类每继承一个就要写一行,而新式类不需要。''' self.money = money print("%s有%s money"%(self.name,self.money)) def __del__(self): #析构函数,程序结束时不用调用自动运行。 print("happy") def __neibu(self): #前面两个下划线的是内部方法(属性),只能在类内部调用,外部无法访问(即封装) print("外面看不了") class Woman(People,Relation): def born(self):#子类不加__init__方法,使用的就是父类的__init__ pass m1 = Man("bzh",20,100) w1 = Woman("tly",20,) m1.make_friends(w1) w1.name = "jzy" print(m1.friends[0].name) print(w1.n)
执行结果