我的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
答案 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
的选项是你实现这一目标的最佳方式。