【问题标题】:Can I use a variable with a class attribute / function?我可以使用具有类属性/函数的变量吗?
【发布时间】:2021-08-18 16:07:37
【问题描述】:

它不允许我使用具有类属性的变量。不知道如何管理这个。 我需要得到 7 的答案。但我需要能够使用该变量。给我错误,

Traceback(最近一次调用最后一次): 文件“c:/Data/First Game (Python)/rough.py”,第 32 行,在 a.add_2(5) AttributeError: 'str' 对象没有属性 'x'

我认为它无法识别我的意思是提到 Me1。

class Test():
    def add_2(self, y):
        print(y + 2)

Me1 = Test()

for i in range (1):
    a = "Me" + str(i+1)
    print (a)
    a.add_2(5)

【问题讨论】:

  • a is string objectMe1 is a class object,你不能这样做。请指定您想要实现的目标。
  • a = eval("Me" + str(i + 1)) 应该可以工作,但你为什么要这样做?这种方法没有意义。
  • 如果你Me1.add_2(5)你会打印7,这是预期的结果吗?
  • 你的问题中没有任何内容可以解释为什么你需要循环,或者需要动态地制作一个与变量名相对应的字符串......等等。如果你想参考Me1,为什么不这样做呢?为什么要循环?

标签: python python-3.x


【解决方案1】:

从我看到的变量a 是一个字符串,而函数a.add_2(5) 属于类Test 的对象。该错误是由于您在字符串上调用类Test的方法引起的

【讨论】:

    【解决方案2】:

    除非您正在探索要学习的东西,否则在运行时构造类的对象没有任何意义。但是,这就是你要找的东西,

    class Test():
        def add_2(self, y):
            print(y + 2)
    
    Me1 = Test()
    
    for i in range (1):
        a = "Me" + str(i+1)
        print(a)
        b = eval(a) # converting str to Class Test object
        b.add_2(5)
    

    输出:

    Me1
    7
    

    参考:https://docs.python.org/3/library/functions.html#eval

    【讨论】:

    • 谢谢,是的,它仅用于学习目的。相当初学者,所以不确定错误是什么。
    • 酷,如果对你有帮助,欢迎采纳!
    猜你喜欢
    • 2021-12-25
    • 2011-01-08
    • 1970-01-01
    • 2021-07-24
    • 2018-05-23
    • 2022-01-18
    • 2019-10-30
    • 1970-01-01
    • 2014-04-13
    相关资源
    最近更新 更多