面向对象

声明类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)

结果

原文地址:https://www.cnblogs.com/jcb9426986/p/10828049.html