这里有点时髦。可以在python中设置带有继承的“ classproperty”吗?
我有以下情况。我有一个具有很多功能的基类。我已经用类方法“ instantiate_from_somewhere_else”覆盖了构造函数。现在,此构造函数必须使用一个在类上设置的值。我目前正在通过另一个类方法my_prop实现此目的。 但是,我发现这很丑陋,如果我可以访问my_prop而不必调用该方法(例如,使用cls.my_prop或self.my_prop而不是cls.my_prop()和self.my_prop())
class base(object):
def __init__(self,**kwargs):
... do things
@classmethod
def my_prop(cls):
return 'base'
def func_to_use_property(self):
print(self.my_prop())
@classmethod
def instantiate_from_somewhere_else(cls,**kwargs):
res = call_external(cls.my_prop(),**kwargs)
return cls(res)
class sub(base):
@classmethod
def my_prop(cls)
return 'child'
好像我在这里有点脑力激荡。这似乎可以解决问题:
class Base(object):
my_prop = 'base'
def instantiate_from_somewhere_else(self):
return self.__class__.my_prop
class Derived(Base):
my_prop = 'derived'