python基础:多态特性:选择支付钱的方式、选择操作不同文件

多态就是不同子类对象调用父类的方法产生不同的结果。
练习:使用不同的支付工具给商店支付钱

import abc
class Pay(metaclass=abc.ABCMeta):
    # 创建抽象类(Pay)
    @abc.abstractmethod # 创建类(Pay)的抽象属性
    def pay(self,money):  pass


class Alipay(Pay):    # 创建抽象类(Pay)的子类(Alipay)
    def pay(self,money): # 根据父类中创建的抽象方法在
        # 子类中创建对应的方法并进行具体描述来实现这一个方法
        print('支付宝到账{}元'.format(money))


class ApplePay(Pay):  # 创建抽象类(Pay)的子类(ApplePay)
    def pay(self,money): # 根据父类中创建的抽象方法在
        # 子类中创建对应的方法并进行具体描述来实现这一个方法
        print('苹果支付{}元'.format(money))

class Person(object): # 创建类(Person)
    def consumption(self,pay,money):
        pay.pay(money)


person=Person() # 创建类(Person)的实例对象(person)

# 支付宝支付
alipay=Alipay() # 创建父类(Pay)的子类(Alipay)的实例对象
person.consumption(alipay,20)
# 实例对象(person)执行类方法consumption方法中执行实例
# 对象(alipay)执行类(Alipay)方法pay,最终打印最终结果

# 苹果支付
apple_pay=ApplePay() # 创建父类(Pay)的子类(ApplePay)的实例对象
person.consumption(apple_pay,200)
# 实例对象(person)执行类方法consumption方法中执行实例
# 对象(apple_pay)执行类(ApplePay)方法pay,最终打印最终结果

运行结果:

支付宝到账20元
苹果支付200元

文件系统:

from abc import ABCMeta, abstractmethod

class File(metaclass=ABCMeta):

    @abstractmethod
    def read(self):  pass

    @abstractmethod
    def write(self): pass


class Word(File):
    def read(self):
        print('很优雅的读...')

    def write(self):
        print('很优雅的写...')


class Txt(File):
    def read(self):
        print('很粗暴的读...')

    def write(self):
        print('很粗暴的写....')

猜你喜欢

转载自blog.csdn.net/weixin_44239541/article/details/86500446