类的继承

# 类的继承
class Po1:
    pass
class Po2:
    pass

class Subclass(Po1): # 单继承
    pass

class Subclass(Po1,Po2): # 多继承
    pass

class Dad:
    money = 10
    def __init__(self,name):
        print("爸爸")
        self.name = name
    def hit_son(self):
        print("%s 打儿子" %self.name)

class Son(Dad):
    pass

s1 = Son("li") # 爸爸

print(s1.name)  # li
print(s1.money) # 10
s1.hit_son()    # li 打儿子

# 先从子类寻找,没有就继承父类
# 类之间显著不同,用组合较好,类之间有很多相同功能,用继承较好

# 接口继承
import abc
class All_file(metaclass=abc.ABCMeta): # 归一化下面的类必须实现这里面的方法
    @abc.abstractmethod
    def read(self):
        pass

    @abc.abstractmethod
    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")

    def write(self):
        print("cdrom write")

class Mem(All_file):
    def read(self):
        print("mem read")

    def write(self):
        print("mem write")
# 子类调用父类方法

class Jiaotong:
    Country = "China"
    def __init__(self,name,speed,load,power):
        self.name = name
        self.speed = speed
        self.load = load
        self.power = power

    def run(self):
        print("开动")

class Subway(Jiaotong):
    def __init__(self,name,speed,load,power,line):
        # Jiaotong.__init__(self,name,speed,load,power)
        super().__init__(name,speed,load,power)
        self.line = line

    def show_info(self):
        print(self.name,self.speed,self.load,self.power,self.line)

    def run(self):
        # Jiaotong(self)
        super().run()
        print("%s %s ,开动了" %(self.name,self.line))

line1 = Subway("1号线","10Km/s",1000,"",12)

line1.show_info()  # 1号线 10Km/s 1000 电 12

line1.run()
# 开动
# 1号线 12 ,开动了

 

posted @ 2018-11-30 20:46  文昌  阅读(65)  评论(0)    收藏  举报