类
声明类class
例如
class dog: #声明一个类 def __init__(self,*d):#类名()自动执行,初始化方法,self是对象,必须传的参数;*d可以换为对应个数的形参 self.name=d[0] def work(self,n):# print('%s go %s'%(self.name,n)) dog1=dog('wb',124,12) #实例化,得到一个对象 dog1.work(5) #dog.work(self,5) 调用类中的方法 print(dog1.name)
继承
#父类中没有的属性、方法就是派生属性、方法
#子类中有的方法就用子类,没有就去父类找,也没有就错,父类、子类都有就用子类的,或者父类.方法名(self)调用
#新式类,继承object类的才是新式类 广度优先
#经典类 深度优先
#多继承中,子类的对象调用一个方法,默认是就近原则,顺序是
#新式类 广度优先
#经典类 深度优先
#Python3中只有新式类
#super的本质:不是单纯的找父类 而是根据调用者的节点位置的广度优先顺序来的
class Animal: #父类 def __init__(self,name,agger,hp): self.name=name self.agger=agger self.hp=hp def eat(self): self.hp+=100 class Person(Animal): #子类 def __init__(self,name,agger,hp,sex): Animal.__init__(self,name,agger,hp) self.sex=sex #派生属性 self.money=0 #派生属性 def bit(self,Dog): #派生方法 Dog.hp-=self.agger class Dog(Animal): #子类 def __init__(self,name,agger,hp,kind): Animal.__init__(self,name,agger,hp) self.kind=kind #派生属性 def bite(self,Persion): Persion.hp-=Dog.agger jin=Dog('金',233,456,"teddy") print(jin.name) jin.eat() print(jin.hp)
结果