多态
'''
class Student:
def __init__(self,age):
self.__age = age
@property
def age1(self):
return self.__age
@age1.setter
def age1(self,age):
self.__age = age
s = Student(10)
s.age = 11
print(s.age)
'''
'''
继承:
has a
class Student:
def __init__(self,name,book):
pass
is a
涉及到父类和子类
class Preson:
def __init__(self,name,book)
self.name = name
self.age = age
def run(self):
print('正在跑步')
class Student(Preson):
def __init__ (self,score);
self.score = score
super(Student,self).__init 继承父类中的属性
def run(self):
print('{}正在走'.format(self.name))
super().run() 调用父类中的方法
复习的时候:
1.__init__ 父类有子类没有 父类没有 子类有 父类子类都有
2.重写的方法,要父类的方法的情况
3.多继承 一个类可以继承多个父类(广度优先 python3)
obj.__mro__
多态 封装 继承------》面对对象编程
'''
'''
多态
'''
class Preson:
def __init__(self, name):
self.name = name
def feed_pet(self, pet): # 此时的pet可以接收一切对象,但是要经过判断
if isinstance(pet, Pet):
print('{}喜欢养{}'.format(self.name, pet.nickname))
else:
print('不是宠物')
class Pet:
role = 'Pet'
def __init__(self, nickname, age):
self.nickname = nickname
self.age = age
def show(self):
print('{}的年龄是{}'.format(self.nickname, self.age))
class Cat(Pet):
role = '猫'
def catch_mouse(self):
print('抓老鼠。。。')
class Dog(Pet):
role = '狗'
def watch_house(self):
print('看家......')
class Tiger:
def eat(self):
print('老虎能吃人')
# 创建对象
cat = Cat('luck', 18)
dog = Dog('大黄', 4)
preson = Preson('家伟')
tiger = Tiger()
preson.feed_pet(tiger)
Python中多态是指一类事物有多种形态。比如动物有多种形态,人,狗,猫,等等。
Python的多态性是指:在不考虑实例类型的情况下使用实例,也就是说不同类型的实例有 相同的调用方法。比如人,猫,狗,等等只要是继承了animal就可以直接调用它的talk()方法。
peo=People() dog=Dog() pig=Pig() #peo、dog、pig都是动物,只要是动物肯定有talk方法 #于是我们可以不用考虑它们三者的具体是什么类型,而直接使用 peo.talk() dog.talk() pig.talk() #更进一步,我们可以定义一个统一的接口来使用 def func(obj): obj.talk()
好处:
1.增加了程序的灵活性 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal) 2.增加了程序额可扩展性 通过继承animal类创建了一个新的类,使用者无需更改自己的代码,还是用func(animal)去调用
回顾:
面对对象的特点:
封装,继承,多态
封装:
私有化属性,定义公有的set和get方法:
class Student;
def __init__(self,age):
self.__age = age
@property
def xx(self):
return self.__age
@xx.setter
def xx(self);
self.__age = xx
这边注意,子类继承父类的时候,父类里面的私有属性(__init__)不会被继承
继承:
has a
is a 父类子类中的调用
多态:
同一个类但是有多种形态的表现
smartcat.994

浙公网安备 33010602011771号