Python3 – 如何从现有的抽象类定义抽象子类?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python3 – 如何从现有的抽象类定义抽象子类?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1148字,纯文字阅读大概需要2分钟。
内容图文
我最初定义了以下抽象类:
from abc import ABC, abstractmethod
class Primitive(ABC):
现在我想创建另一个继承自Primitive的抽象类:
class InstrumentName(Primitive)
我需要这个类是抽象的,因为我最终想要创建以下两个具体类:
class CurrencyInstrumentName(InstrumentName)
class MetalInstrumentName(InstrumentName)
我已阅读文档并搜索了SO,但它们主要涉及从抽象类中提取具体类,或讨论Python如何处理抽象
解决方法:
只是子类,你不需要做任何特别的事情.
只有在实现中不再有abstractmethod和abstractproperty对象时,类才会变得具体.
让我们来说明一下:
from abc import ABC, abstractmethod
class Primitive(ABC):
@abstractmethod
def foo(self):
pass
@abstractmethod
def bar(self):
pass
class InstrumentName(Primitive):
def foo(self):
return 'Foo implementation'
这里,InstrumentName仍然是抽象的,因为bar是一个抽象方法.您无法创建该子类的实例:
>>> InstrumentName()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class InstrumentName with abstract methods bar
子类还可以根据需要添加@abstractmethod或@abstractproperty方法.
在引擎盖下,所有子类都继承了强制执行此操作的ABCMeta元类,它只是检查类中是否还有@abstractmethod或@abstractproperty属性.
内容总结
以上是互联网集市为您收集整理的Python3 – 如何从现有的抽象类定义抽象子类?全部内容,希望文章能够帮你解决Python3 – 如何从现有的抽象类定义抽象子类?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。