一. 单继承 、多继承、多态,重写与父类
1.单继承、就是子类继承父类的属性与方法
class father():
def __init__(self,name):
self.name = name
def work(self):
print("工作")
class son(father):#单继承,把父类的类名写到子类的这个括号里面就实现了单继承
def son_name(self):
print("我的名字是%s"%self.name)#继承父类后可以使用父类的属性和方法
son1 = son("老王")
son1.son_name()
son1.work()
==============================执行结果============================
我的名字是老王
工作
2.多继承、就是子类继承多个父类,拥有他们的方法或者属性
class father():#第一个父类
def work(self):
print("工作")
class mother():#第二个父类
def housework(self):
print("做家务")
class son(father,mother):#继承上面的两个父类
pass
laowang = son()
laowang.work()#儿子拥有父亲的工作基因
laowang.housework()#儿子拥有母亲的做家务基因
#注意点,加入father父类中有和mother父类中有相同的方法时,子类先调用那个?
#可以通过以下方法查看子类调用父类的顺序
print(son.__mro__)#这个方法可以查看顺序
=============================执行结果==========================
工作
做家务
(<class '__main__.son'>, <class '__main__.father'>, <class '__main__.mother'>, <class 'object'>)
3.重写与调用父类
======================重写=====================
class father():
def work(self):
print("工作")
class son(father):
def work(self):
print("学习")#我不想工作,我就要学习
#重写就是父类的方法满足不了子类了,就要用到重写
laowagn = son()
laowagn.work()
======================执行结果=======================
学习
======================调用父类==================
class father():
def __init__(self,name,age):
self.name = name
self.age = age
class son(father):
def __init__(self,name,age):#重写父类的__init__方法
#下面就是调用父类的方法,语法
super().__init__(name,age)#这里的两个参数就是父类里面初始化的两个参数
def Personal_Information(self):
print("我的名字是%s\n我的年龄是%s岁"%(self.name,self.age))
xiaowang = son("老王",18)
xiaowang.Personal_Information()
=====================执行结果========================
我的名字是老王
我的年龄是18岁
二.静态方法、类方法、多态
1.静态方法,就是和实例属性、实例方法、类属性、类方法没有关系的方法就叫静态方法声明静态方法用 @staticmethod
class Dog():
age = "18"
@staticmethod
def static():#静态方法 类对象和实例对象都可以调用
return Dog.age
dahuang = Dog()#注意静态方法不需要多定义参数
print(Dog.static())#这个是类对象调用
print(dahuang.static())#这个是实例对象调用
======================执行结果=======================
18
18
2.类方法,就是类本身的属性与方法,声明类方法用@classmethod
class Dog():
@classmethod #这里是类方法的声明
def wark(cls):#类对象的第一个参数是 cls
print("哇哇叫")
dog1 = Dog()
dog1.wark()#实例对象调用类方法
Dog.wark()#类对象调用类方法,类对象调用必须是类的本身
=====================执行结果======================
哇哇叫
哇哇叫
3.多态,所谓多态,是指基类的同一个方法在不同派生类对象中具有不同的表现和行为。龙生九子,子子不同。禅宗说‘一花开五叶’也是这个道理。派生类继承了基类的行为和属性后还会增加特定的行为和属性,同时还可能会对基类的某些行为进行一定改变,这恰恰是多态的表现形式。在python中主要通过重写父类方法来实现多态
class Anamail():#动物分为 人、狗、猪,他们都会跑
def run(self):#他们都有同一个特点 跑
print("跑")
class people(Anamail):
def run(self):
print("人在跑")
class dog(Anamail):
def run(self):
print("狗仔跑")
class pig(Anamail):
def run(self):
print("猪在跑")
laowang = people()
laowang.run()
dahuang = dog()
dahuang.run()
pig = pig()
pig.run()
#从上面可以看出多态是基于继承和重写的
=====================执行结果======================
人在跑
狗仔跑
猪在跑
#这就是一个简单的多态形式
网友评论