从(抽象)类属性派生的类属性

时间:2021-04-21 08:39:13

标签: python python-3.x abstract-class

在 Python 3.6+ 的抽象类中,我试图定义一个派生自其他(抽象)类属性的类属性。

我尝试过的:

from abc import abstractmethod

class AbstractAnimal:
    
    @classmethod
    @property
    @abstractmethod
    def front_limbs(cls):
        raise NotImplementedError
    
    @classmethod
    @property
    @abstractmethod
    def back_limbs(cls):
        raise NotImplementedError
    
    @classmethod
    @property
    def limbs(cls):
        return [cls.front_limbs, cls.back_limbs]
    
class Monkey(AbstractAnimal):
    front_limbs = 'arms'
    back_limbs = 'legs'

print(Monkey.front_limbs)
print(Monkey.back_limbs)
print(Monkey.limbs)

我期望/渴望:

arms
legs
[arms, legs]

我明白了:

arms
legs
<bound method ? of <class '__main__.Monkey'>>

我尝试查看以前的问题,因为这感觉很基本,但他们都没有讨论派生类属性(例如,this one 帮助我从抽象属性开始)。

0 个答案:

没有答案