python多态

多态的魅力:支付方式的选择
本文通过支付方式的选择这一实例,深入浅出地讲解了面向对象编程中多态的概念。多态允许同一行为表现出不同的形态,如支付宝、微信、苹果支付等,满足消费者多样化的支付需求。

其他面向对象正菜:
面向对象之封装
面向对象之继承
什么多态?
多态简而言之就是同一个行为具有多个不同表现形式或形态的能力。
举个例子:在商店买东西的时候,我们可以支付宝支付,微信支付,苹果支付。客户支付这个行为就表现出多态,为了满足客户的需求,这几个支付的接口都要有,想用支付宝支付的,用支付宝,想用苹果支付的用苹果支付,想用微信支付的,用微信支付。这就是一个行为表现出多种形态。
代码示例:

class Pay(object):
    def pay(self, money): pass

class Alipay(Pay):
    def pay(self, money):
        print("支付宝支付了{}元".format(money))

class Applepay(Pay):
    def pay(self, money):
        print("apple pay 支付了{}元".format(money))


class Wechat(Pay):
    def pay(self,money):
        print("微信支付了{}元".format(money))

class Person(object):
    def consumption(self, pay, money):
        pay.pay(money)

alipay = Alipay()
apple_pay = Applepay()
wechat = Wechat()
person = Person()

# 用支付宝支付
person.consumption(alipay,1000)
#用苹果支付
person.consumption(apple_pay,2000)
#用微信支付
person.consumption(wechat,3000)

'''
运行结果:

支付宝支付了1000元
apple pay 支付了2000元
微信支付了3000元
'''

总结:多态的好处我相信大家心中也略知一二了,可以看到这段代码,如果我是消费者,支付方式,我可以选择多种,这便形成了多态。

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 多态的特点** - 不需要显式继承接口或抽象类。 - 动态语言特性使得多态更加灵活。 - 适用于任何具有相同方法的对象,即使它们没有继承关系。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值