带有继承的Python类属性

时间:2019-04-05 23:17:50

标签: python class subclass

这里有点时髦。可以在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'

0 个答案:

没有答案