class Father: pass class Mother: pass class Son(Father): #单继承 pass class Son(Father, Mother): #多继承(可以不止两个) pass
class Father: money = 100 def __init__(self,name, age): self.name = name self.age = age def play_son(self): print("%s正在打儿子"%self.name) class Son(Father): pass f1 = Father("蔡徐坤","30") print(Son.money) Son.play_son(f1)
class Father: money = 100 def __init__(self,name, age): self.name = name self.age = age def play_son(self): print("%s正在打儿子"%self.name) class Son(Father): money = 10 def play_son(): print("测试") f1 = Father("蔡徐坤","30") print(Son.money) Son.play_son()
class Father: money = 100 def __init__(self,name, age): self.name = name self.age = age def play_son(self): print("%s正在打儿子"%self.name) class Son(Father): money = 10 f1 = Father("蔡徐坤","30") print(Son.money) s1 = Son("自己", "18") #实例化Son的时候会触发继承的父类的init,所以需要传入两个参数 print(s1.name) print(s1.__dict__) print(Son.__dict__)
1. 当类之间有显著不同时,并且较小的类是较大类所需要的组件时,用组合比较好
2. 当类之间有很多相同的功能来提取这些共同的功能做成基类,用继承比较好
import abc class All_file(metaclass = abc.ABCMeta): @abc.abstractclassmethod def read(self): pass @abc.abstractclassmethod def write(self): pass class Disk(All_file): def read(self): print(‘disk read‘) def write(self): print(‘disk write‘) class Cdrom(All_file): def read(self): print(‘cdrom read‘) #此处少定义一个write函数,所以会报错 c1 = Cdrom()
import abc class All_file(metaclass = abc.ABCMeta): @abc.abstractclassmethod def read(self): pass @abc.abstractclassmethod def write(self): pass class Disk(All_file): def read(self): print(‘disk read‘) def write(self): print(‘disk write‘) class Cdrom(All_file): def read(self): print(‘cdrom read‘) d1 = Disk() d1.read()
class A: #基类 def test(sslf): print(‘A‘) class B(A): def test(self): print(‘B‘) class C(A): def test(self): print(‘C‘) class D(C): def test(self): print(‘D‘) class E(C): def test(self): print(‘C‘) class F(D, E): def test(self): print(‘F‘) f1 = F() f1.test()
F--->D--->B--->E--->C---->A
print(F.__mro__)
即:F--->D---->B--->A---->E----->C
原文:https://www.cnblogs.com/dabai123/p/11451958.html