继承:
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)