[英]Easily editing base class variables from inherited class
我的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
好吧,您可以通过以下方式做到这一点:
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
,它可以是staticmethod,因为您不需要当前的类对象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
一起分配是实现该目标的最佳方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.