gpt4 book ai didi

python - 模块abc,注册方法

转载 作者:行者123 更新时间:2023-12-01 05:10:51 25 4
gpt4 key购买 nike

我尝试在Python中使用抽象,我创建了基类和具体类。在我编写 register 方法后,它显示 Undefined variable from import: register。我想 register 只是一个方法,我应该导入哪个库?

具体测试.py:

import baseTest

class concreteTest(baseTest):

def __abcMethodTest__(self):
print("I am in concrete class")

baseTest.register(concreteTest)

if __name__ == '__main__':
print 'Subclass:', issubclass(concreteTest, baseTest)
print 'Instance:

baseTest.py:

from abc import ABCMeta
from abc import abstractmethod

class baseTest:
__metaclass__ = ABCMeta

@abstractmethod
def __abcMethodTest__(self):
while False:
yield None

最佳答案

您在名为 baseTest 的模块中有一个名为 baseTest 的类,因此在导入模块 baseTest 后,您需要使用 baseTest.baseTest 访问该类:

baseTest.baseTest.register(concreteTest)

请注意,您甚至不需要将 concreteTest 注册为虚拟子类,因为它已经是一个实际的子类。 register() 方法旨在注册实际上并非从您定义的抽象类派生的类,但确实实现了接口(interface)。

也就是说,您不太可能经常想要在 Python 中使用抽象类。它们在某些特殊情况下很有用,但不用作声明接口(interface)的标准方式。另请参阅博客文章 Python is not Java .

关于python - 模块abc,注册方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24261303/

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