【发布时间】:2025-12-11 06:15:01
【问题描述】:
我对目标python有一个特殊的问题,我想要一个配置类(Config),所以它可以用作其他需要配置数据的类的基类。我想要做的是使用这个 Config 类在所有继承类之间共享一次启动的数据。对我来说重要的是,当类继承配置数据时,我希望它能够像它所拥有的那样使用它,例如:
class Config:
a= None
b= None
class A(Config):
def __init__(self):
a = 10
def print_a(self):
print(self.a)
这是第一个问题,我应该如何在 A 类中设置 a 和 b 的值?另一个是如何在类内部调用它们?
当我这样做时:
obj = A()
obj.a = 5
或者当我添加methon做一个类,它设置了一个变量:
class A(Config):
def __init__(self):
a = 10
def print_a(self):
print(self.a)
def setA(self, val):
a = val
然后打电话:
obj = A()
obj.setA(12)
它不会改变 A.a 或 Config.a
总而言之,我的目标是创建一个带有静态变量(Config)的类,通过继承,我想从另一个类 A(Config)获得对这些变量的访问权,并使用这些变量,因为它们是本机类变量。同样重要的是 obj = A() -> obj.a 中的每次更改都应该更改 Config.a 变量(当我更改变量 a 插入类 A)。
我想做什么是一个令人困惑的想法,希望你能理解。另外我对python还很陌生,所以还有很多我不明白的地方,请尽量原谅:)。
【问题讨论】:
-
虽然您可以通过其所有实例读取类属性,但您只能通过实例写入实例属性。
-
a = 5分配一个局部变量。self.a = 5分配一个实例属性。Config.a = 5分配一个类属性。type(self).a = 5将属性分配给 current 类,这在您进行继承时可能会很有趣。 -
@deceze 谢谢你,很抱歉在下面提到你愚蠢的我,但我没有注意到你上面的回复。问题是我对范围的误解,现在我明白了:)
标签: python class inheritance static