gpt4 book ai didi

python - 在 Python 中实现类似于接口(interface)的东西的好方法是什么?

转载 作者:行者123 更新时间:2023-11-28 22:00:46 25 4
gpt4 key购买 nike

在 Python 中实现类似于 Delphi/C# 接口(interface)或抽象类的东西的好方法是什么?一个将强制其所有子类实现一组特定方法的类?

最佳答案

执行此操作的最简单方法是使用自 Python 2.7 版本以来已包含在 Python 中的抽象基类实现。

这让您可以使用 abc.ABCMeta 元类将基类标记为抽象类。然后您可以将方法和属性标记为抽象的。当您使用 ABCMeta 元类(或其任何子类)实例化一个类时,如果实例中有任何抽象属性或方法未定义,将抛出异常。

例如

>>> from abc import ABCMeta, abstractmethod
>>> class Foo(object):
__metaclass__ = ABCMeta
@abstractmethod
def bar(self): pass


>>> class BadFoo(Foo):
pass

>>> BadFoo()

Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
BadFoo()
TypeError: Can't instantiate abstract class BadFoo with abstract methods bar
>>> class GoodFoo(Foo):
def bar(self):
return 42


>>> GoodFoo()
<__main__.GoodFoo object at 0x027354B0>
>>>

只有在类被实例化时才会进行检查,因为拥有一个只实现了一些抽象方法的子类是完全合法的,因此它本身就是一个抽象类。

关于python - 在 Python 中实现类似于接口(interface)的东西的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com