python中继承

继承:
1.继承关系可以是多个父类

注意点,子类初始化方法里面,需要调用父类的初始化方法
class NorthTiger(Tiger):
color = “yellow white”
def init(self,weight):
Tiger.init(self.weight)
可以把继承关系继续下去

#可以多重继承
class SouTiger(Tiger,NorthTiger):    #相当于两个父亲,有相同的属性的时候,Tiger,NorthTiger哪个在前,就继承谁的,先入为主
多继承的时候,初始化文件都要写上。 
2.重定义
    子类的属性和行为和父类有些不一样
    比如:重定义东北虎的叫声和他的名字
    子类实例调用这些属性,方法会使用新的定义
    多态
        同样的方法调用,在不同的类型的对象上表现出不同的特性,就称之为多态
        如果要执行父类的方法:
        class NorthTiger(Tiger):
            def __init__(self,weight):
                Tiger.__init__(self.weight)
            @staticmethod
            def run():
                print("子类的run方法")


        n1 = NorthTiger(100)
        n1.run()     #执行结果是:子类的run方法
        super(NorthTiger,n1).run()    #执行结果是:父类的run方法    如果要执行父类的方法用super方法
 3. __name   私有属性,不可以被继承               
class Tiger:  # 驼峰原则
    TypeName = "tiger"  # 类属性   类里面的变量--属性
    def __init__(self, weight=200):  # 初始化方法--构造方法--(函数)  类里面的函数就是方法
        self.weight = weight  # weight可以是必填,缺省。。。
    #实例方法
    def feed(self,food):  # 有self代表实例方法
        if food == "肉":
            print("喂食正确!")
            self.weight += 10   # 加减都是对该只老虎
        else:
            print("喂食错误!")
            self.weight -= 10
    def roar(self):
        print("WOW!!!")
        self.weight -= 5
    @staticmethod  #只能修饰紧跟的一个方法
    def run():
        print("静态方法")

    pass
class Sheep:
    pass
class Room:
    def __init__(self,num,animal):
        self.num = num
        self.animal =animal

t1 = Tiger(200)  # 定义一个实例

class NorthTiger(Tiger):#继承了Tiger的属性
    name = "nn"   #可以定义自己的属性
    pass



n1 = NorthTiger()
print(n1.TypeName)

猜你喜欢

转载自blog.csdn.net/qq_37615098/article/details/82731444
今日推荐