在Python3.6中,假设我有一个抽象类MyAbstractClass
from abc import ABC, abstractmethod
class MyAbstractClass(ABC):
@property
@abstractmethod
def myProperty(self):
pass
一个类MyInstantiatableClass
从中继承。那么如何在实例化这个类中的对象时写入属性myProperty
?我希望能够同时设置和获取myProperty
。下面不起作用。在
还有一个主要功能,比如说
from MyInstantiatableClass import MyInstantiatableClass
def main():
MyInstantiatableClass(3) # 3 is the desiredValueOfMyProperty for this instantiation
MyInstantiatableClass(5) # 5 is the desiredValueOfMyProperty for this instantiation
这里似乎有一个差异;使用}。使用这个:
@property
和@abstractmethod
似乎并不强制要求从abc继承的类同时定义setter
和{{and只允许在类中实例化},然后为类提供实例:
^{2}$这是因为只有一个名称(
myProperty
)出现在ABC的名称空间中,当您在基类中重写时,只需要定义这一个名称。在有一种方法可以强制执行它。您可以创建单独的抽象方法并将它们直接传递给
property
:为这个abc提供一个实现现在需要}都有一个实现(在
getter
和{MyAbstractClass
命名空间中被列为abstractmethod
s的两个名称都需要有一个实现):实现它们与任何旧属性完全相同。这没什么区别。在
相关问题 更多 >
编程相关推荐