+ 1

How to achieve same result in python?

How do i create a static variable in python that will change everywhere if it is modified by any instance of the class? https://code.sololearn.com/c5y82awz4Zj1/?ref=app https://code.sololearn.com/c70Ly7DdQcxB/?ref=app

10th Dec 2022, 7:17 PM
Harsha S
Harsha S - avatar
4 Réponses
+ 1
Easy way: use __class__ method to modify class attr as static variable example: t1.__class__.n = 6 <-- you change attribute of class, all instances of this class will print same value t1.n = 6 <-- you create new attribute of instance t1, but it not change attribute of class Little harder: you can change logic of __setattr__ method so when changing for exampe "n" it changing in class when you use this: t1.n = 6
10th Dec 2022, 9:13 PM
Danila Khaminets
Danila Khaminets - avatar
+ 3
Test.n = 6 😊
10th Dec 2022, 9:27 PM
Tibor Santa
Tibor Santa - avatar
+ 2
in Python, to change the value of the class attribute, you have to change it at the class level. object instances can however create and alter instance value. so you do something like this: class A: x = 5 a1 = A() a2 = A() print(f'{A.x = }, {a1.x = }, {a2.x = }') A.x =100 print(f'{A.x = }, {a1.x = }, {a2.x = }') and if you do a1.x = 50 then using A.x = 1 will alter a2.x but cannot alter a1.x because you defined and created an independent instance value for x in a1. but if you del a1.x then a1.x will again reference the class attribute x.
12th Dec 2022, 1:55 PM
Bob_Li
Bob_Li - avatar
+ 1
Everything is very simple 😉 class Test: n = 5 t1 = Test t2 = Test() t1.n = 6 print(t1.n, t2.n, Test.n)
10th Dec 2022, 9:31 PM
Solo
Solo - avatar