![](/img/trans.png)
[英]Setting an attribute value for an inherited class when it's not an argument in __init__
[英]How to update a class init argument value?
我正在尝试使用一个常量变量作为两个不同类的基础。 然后我想用一个 class 来更新变量,然后让更新影响两个类。 如何 go 关于这个? 可能吗?
如果我只是简单地更新变量,那么我可以告诉对象 A 和 B 已经创建,因此它们仍然具有旧的 var1 值,因此不起作用。
帮助表示赞赏!
class A:
def__init__(self, var1):
self.var1 = var1
def function A:
#Use self.var1 to do something
class B:
def __init__(self, var1):
self.var1 = var1
def function B:
#Update self.var1
var1 = 123
A = A(var1)
B = B(var1)
python 中的变量被实现为可重置引用,因此任何赋值都会重置引用,这不会影响任何其他变量。 这就是为什么类似: var1 = 456
不会影响您的对象的原因。
一种方法是引入一些间接性:
class A:
def __init__(self, var1):
self.var1 = var1
def __str__(self):
return f'A:{self.var1}'
class B:
def __init__(self, var1):
self.var1 = var1
def __str__(self):
return f'B:{self.var1}'
var1 = [123] # a list containing an int
a = A(var1)
b = B(var1)
print(a)
print(b)
var1[0] = 456
print(a)
print(b)
Output:
A:[123]
B:[123]
A:[456]
B:[456]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.