我正在使用一个变量作为类中的字符串的一部分,但是打印字符串显示了在程序开始时设置的变量,而不是它的设置更改为
我当前的代码基本上说:
b = 0
class addition:
a = 1 + b
def enter():
global b;
b = input("Enter a number: ")
print(addition.a) - Prints "1" regardless of what is typed in
enter()
我将如何"重新运行"类以使用函数中分配给变量的值?
使用B的重新分配值的最简单方法是创建ClassMethod a
:
b = 0
class addition:
@classmethod
def a(cls):
return 1 + b
def enter():
global b;
b = int(input("Enter a number: ")) # convert string input to int
print(addition.a()) # calling a with ()
enter()
但它会打破您的原始语义,以无需()
调用addition.a
。如果您确实需要保存它,则有一种方法使用元类:
class Meta(type):
def __getattr__(self, name):
if name == 'a':
return 1 + b
return object.__getattr__(self, name)
b = 0
class addition(metaclass=Meta):
pass
def enter():
global b;
b = int(input("Enter a number: "))
print(addition.a) # calling a without ()
enter()