抽象类

1.抽象类的意义是?或者说为什么要有抽象类?

抽象类是对多个类中共同方法的抽取,但是子类又有不同的实现,父类只能抽取出方法的名字,而不明确方法的具体实现.

这种只规定子类拥有哪些方法,而不明确具体实现的父类,就应该定义为抽象类.

抽象类只用来规范子类应该具有哪些行为,而不明确具体的动作.

2.抽象类的特点是?

抽象类和普通类的最主要区别在于:

1.抽象类继承的()中写的是metaclass=ABCMeta

2.在类体中有用@abstractmethod修饰的方法(需要子类重写的方法)

3.抽象类中是否可以有非抽象方法?

可以.

4.抽象类中的抽象方法是否可以有方法体?

可以.

5.抽象类中是否可以有__init__方法?为什么?

可以,因为抽象类中也可以有实例属性供子类继承.

而实例属性必须在父类中初始化,子类对象才能继承.

抽象类的__init__方法不能手动调用,只能是子类创建对象时自动调用的.

6.代码

from abc import ABCMeta, abstractmethod


class Payment(metaclass=ABCMeta):
    def __init__(self, name, money):
        self.name = name
        self.money = money

    @abstractmethod
    def pay(self): pass

    @abstractmethod
    def back(self): pass


class Wechatpay(Payment):
    def pay(self):
        print('%s使用微信支付了%s元' % (self.name, self.money))

    def back(self):
        print('退款')


class Alipay(Payment):
    def pay(self):
        print('%s使用支付宝支付了%s元' % (self.name, self.money))

    def back(self):
        print('退款')


class Applepay(Payment):
    def pay(self):
        print('%s使用苹果支付了%s元' % (self.name, self.money))

    def back(self):
        print('退款')


def pay(person):
    person.pay()


ap = Applepay('alex', 20000)
pay(ap)

posted @ 2019-04-09 17:23  blog_wu  阅读(115)  评论(0编辑  收藏  举报