python 多态

博客介绍了多态的概念,定义时 temp 不确定调用基类还是子类,只有在调用瞬间,根据传入对象来决定调用谁,这便是多态。
class Dog(object):
    def print_self(self):
        print("大家好,我是xxx")

class Xiaotian(Dog):
    def print_self(self):
        print("Helo everybody,I'M XXX")

def introduce(temp): #temp 为传入对象引用 (dog1/dog2)
    temp.print_self()

dog1 = Dog()
dog2 = Xiaotian()

introduce(dog1)#当dog1 传入时 dog1 和 temp 都指向 Dog实例对象
introduce(dog2)

定义的时候 temp 不知道调用谁 有可能是基类 也有可能是子类,只有当调用那一刹那 根据传入的对象来决定调用谁.......

这就是多态了。

Python 多态(Polymorphism)是面向对象编程中的一个重要概念,它允许同的对象对同一方法调用产生同的行为。在 Python 中,多态主要通过**方法重写(Method Overriding)**和**鸭子类型(Duck Typing)**来实现。 ### 1. **多态的实现方式** - **方法重写(继承多态)**:子类可以重写父类的方法,使得同的子类对象调用相同的方法时表现出同的行为。 - **鸭子类型(Duck Typing)**:Python 关心对象的类型,而是关注对象是否具有某个方法或行为。如果对象的行为符合预期,就可以调用对应的方法。 ### 2. **示例代码** ```python class Animal: def speak(self): pass class Dog(Animal): def speak(self): return "Woof!" class Cat(Animal): def speak(self): return "Meow!" def make_sound(animal): print(animal.speak()) # 同的对象调用相同的方法,产生同的行为 dog = Dog() cat = Cat() make_sound(dog) # 输出 "Woof!" make_sound(cat) # 输出 "Meow!" ``` **鸭子类型示例**: ```python class Duck: def quack(self): return "Quack!" class Person: def quack(self): return "I can quack like a duck!" def sound_maker(obj): print(obj.quack()) duck = Duck() person = Person() sound_maker(duck) # 输出 "Quack!" sound_maker(person) # 输出 "I can quack like a duck!" ``` ### 3. **Python 多态的特点** - 需要显式继承接口或抽象类。 - 动态语言特性使得多态更加灵活。 - 适用于任何具有相同方法的对象,即使它们没有继承关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值