首页 > 解决方案 > 可以为不同的类变量调用相同的方法吗

问题描述

我正在尝试为代码中显示的不同变量调用相同的方法。在示例中,我试图通过发送变量的名称来获取值的双倍。

我尝试了不同的方法,但似乎都没有奏效:

Class Number:
    def __init__(self, a, b):
        self.num = a
        self.float = b
    def teste(self, val):
        print(2*self.val)

l=Number(3,9)
l.teste(a)
l.teste(b)

我希望输出为 6 和 18

标签: pythonpython-3.xpython-2.7

解决方案


代码有几个问题

  • class,不是Class
  • 定义为实例变量,而不是类num变量float
  • 最后三行不是类定义的一部分,因此它们需要不缩进
  • float是属性名称的糟糕选择(即它暗示类型是浮点数,但这不是强制的)
  • val不是类的属性,而是teste()方法的参数。self.因此,您在引用它时不需要。

虽然我不确定目的是什么,但你可以实现你想要的

class Number:
    def __init__(self, a, b):
        self.num = a
        self.float = b

    def teste(self, val):
        print(2 * getattr(self, val))

    def testb(self, val):
        print(2 * val)

foo = Number(3, 9)
foo.teste('num')
foo.teste('float')
foo.testb(foo.num)
foo.testb(foo.float)
# but you can do also for any number
foo.testb(10)

teste()注意和之间的区别testb()


推荐阅读