从继承的类轻松编辑基类变量

时间:2016-09-02 11:13:41

标签: python class object inheritance attributes

基类和继承类之间的通信如何工作?

我的python代码中有一个数据类(存储所有重要的值,duh),我尝试从数据库类继承新的子类,一切正常但除了类不是这样的事实实际上进行通信(当一个类变量在子类中被更改时,类属性在基类中没有更改,也没有任何其他子类。

我想我只是无法理解继承是如何工作的,我的问题是:继承是否保持与基类的任何连接,或者是继承时设置的值?

如果有任何连接,你如何轻松地从子类操作基类变量(我尝试用 cls 变量来访问基类变量,但没有成功)

实施例

class Base:
    x = 'baseclass var' # The value I want to edit

class Subclass(Base):
    @classmethod(cls)
        ???edit_base_x_var_here??? # This is the part I don't know

1 个答案:

答案 0 :(得分:1)

嗯,你可以这样做:

class Base:
    x = 'baseclass var' # The value I want to edit

class Subclass(Base):
    @classmethod
    def change_base_x(cls):
        Base.x = 'nothing'


print Subclass.x
Subclass.change_base_x()
print Subclass.x

此外,您不必使用@classmethod,它可能是静态方法,因为您不需要当前的类对象cls

class Base:
    x = 'baseclass var' # The value I want to edit

class Subclass(Base):
    @staticmethod
    def change_base_x():
        Base.x = 'nothing'

编辑:

根据你的问题,关于其他方式。是的,但不是那么漂亮。我会说更多。如果你想改变基类的变量,那么你将全局地进行,所以分配给Base.x的选项是你实现这一目标的最佳方式。