单继承
单继承:子类只继承一个父类
子类在继承的时候,在定义类时,小括号()中为父类的名字
父类的属性、方法,会被继承给子类
虽然子类没有定义__init__方法初始化属性,也没有定义实例方法,但是父类有。所以只要创建子类的对象,就默认执行了那个继承过来的__init__方法
class A (object):
def __init__(self):
self.num = 10
#实例方法
def print_num(self):
print(self.num + 10)
#B是子类 A是父类 子类继承父类
class B (A):
pass
#创建子类实例化对象
b = B()
print(b.num)
b.print_num() #实例化对象直接调用父类的成员属性和方法
多继承 子类重写父类的同名属性和方法
多继承可以继承多个父类,也继承了所有父类的属性和方法
注意:如果多个父类中有同名的 属性和方法,则默认使用第一个父类的属性和方法(根据类的魔法属性mro的顺序来查找) 多个父类中,不重名的属性和方法,不会有任何影响
class Master(object):
def __init__(self):
self.kongfu = "古法配方"
def make_cake(self):
print(" 古代 按照 %s 制作了一份煎饼果子...." % self.kongfu)
class School(object):
def __init__(self):
self.kongfu = "现代配方"
def make_cake(self):
print(" 现代 按照 %s 制作了一份煎饼果子...." % self.kongfu)
class Prentice(Master,School):#多继承,继承多个父类
pass
#子类重写父类的同命方法和属性
def __init__(self):
self.kongfu = "猫配方"
def make_cake(self):
print(" 猫配方 按照 %s 制作了一份煎饼果子...." % self.kongfu)
p = Prentice()
print(p.kongfu) #子类和父类有同名属性,默认使用子类的
p.make_cake() # 子类和父类有同名方法,默认使用子类的
#子类的这个方法 决定属性和方法查找的顺序
print(Prentice.__mro__)
调用父类方法super()
class Animal(object):
def play(self):
print("每个动物都有自己的玩法")
class Cat(Animal):
#方法重写
def play(self):
super().play()#调用super
print("猫喜欢捉球")
c = Cat()
c.play()
实现一个简单的金融类
父类股票类,方法心情操作法输出股票买入和卖出;
子类(公募机构)继承自父类,方法量化交易模型操作法输出公募机构买入和卖出;
子类(私募机构)继承自父类,方法量化交易模型操作法输出私募机构买入和卖出; 创建对象实现相关方法的调用 尝试使用尽可能多的方法调用父类方法
子类(公募机构)学会了父类的方法心情操作 子类(私募机构)学会了父类的方法心情操作并专研了自己的输出股票和私募买入和卖出(重写)
class GuPiao(object):
def __init__(self):
print("心情操作法输出股票买入和卖出")
def student(self):
print("情操作并专研了自己的输出股票和私募买入和卖出")
def cz(self):
print("学会了父类的方法心情操作")
class Gong(GuPiao):
def __init__(self):
print("量化交易模型操作法输出公募机构买入和卖出")
def cz(self):
print("学会了父类的方法心情操作")
class Si (GuPiao):
#重写父类的方法
def student(self):
print("情操作并专研了自己的输出股票和私募买入和卖出")
print("化交易模型操作法输出私募机构买入和卖出")
gm = Gong()
s = Si()
gm.__init__()
s.student()



