一.继承 class 子类名(父类名):
>>> class Parent: def hello(self): print('father') >>> class Child(Parent): pass >>> a=Parent >>> a.hello() >>> a=Parent() >>> a.hello() father >>> b=Child() >>> b.hello() father如果子类中定义了与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性
>>> class Parent: def hello(self): print('father') >>> class Child(Parent): def hello(self): print('child') >>> c=Child() >>> c.hello() child二.super函数 如果子类与父类之中都调用了init方法,则子类中的init方法会覆盖父类的init方法,如果子类中既想应用子类的init方法,又想调用父类的init方法,则引入super函数,引用该函数不需要添加任何参数,python会自动识别你要引用的init方法是属于哪一个父类的 三.多重继承 即一个子类可以继承多个父类的属性与方法
>>> class A: def a(self): print('aaa') >>> class B: def b(self): print('bbb') >>> class C(A,B):#父类间用逗号隔开 pass >>> h=C() >>> h.a() aaa >>> h.b() bbb四.组合 如果继承不适用时,可以用组合的方法,即在类之中也可以进行类的实例化
>>> class Turtle: def __init__(self,x): self.num=x >>> class Fish: def __init__(self,x): self.num=x >>> class Pool:#不使用继承,直接使用组合 def __init__(self,x,y): self.turtle=Turtle(x) self.fish=Fish(y) def print_num(self): print('乌龟%d,小鱼%d'%(self.turtle.num,self.fish.num)) >>> pool=Pool(1,10) >>> pool.print_num() 乌龟1,小鱼10五.实例属性和类属性 给实例绑定属性的方法是通过实例变量,或者通过self变量
>>> class Student(object): def __init__(self,name): self.name=name#通过self变量,在实例化后就绑定了name属性 >>> s=Student('bob') >>> s.score=90#通过实例变量s,在实例化后绑定score属性如果类本身需要绑定一个属性,则直接在类中定义即可,即类属性,但这个类实例化后的对象都可以访问到该属性,如果实例化对象又重新对这个属性进行修改,则会覆盖类的该属性,但类中的属性依旧不改变
>>> class A: x='lol' >>> a=A() >>> a.x 'lol' >>> a.x='pop' >>> a.x 'pop' >>> A.x 'lol'