【问题标题】:Easily editing base class variables from inherited class从继承的类中轻松编辑基类变量
【发布时间】:2016-09-02 11:13:41
【问题描述】:

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

我的 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

【问题讨论】:

    标签: python class object inheritance attributes


    【解决方案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 的选项是您实现该目标的最佳方式。

    【讨论】:

    • 我已经知道这个方法了,我的问题是有没有更好的方法来实现这个。
    • 好的,这是实现我的目标最方便的方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2021-10-13
    • 2019-11-25
    • 1970-01-01
    • 2018-03-07
    相关资源
    最近更新 更多