更改类中使用的变量



我正在使用一个变量作为类中的字符串的一部分,但是打印字符串显示了在程序开始时设置的变量,而不是它的设置更改为

我当前的代码基本上说:

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()

相关内容

  • 没有找到相关文章