我在Python 3中调用Dictionary中的函数

Mar*_*ano 1 python dictionary function python-3.x

我有一个类,我有3个简单的函数,我将它们全部打包在字典中.目标是能够遍历调用函数的字典,但是,我收到了几个错误:

class Testa(object):
    def __init__(self, debt = None, equity = None):
        self.debt = debt
        self.equity = equity
    def tutu():
        print('hola')
    def foo(self):
        print('hello')
    def bar(self, debt=None, equity=None):
        return equity - debt

    variables = {'tutu':tutu,'foo':foo,'bar':bar}
Run Code Online (Sandbox Code Playgroud)

我得到的结果如下:

ra =Testa()
ra.variables['tutu']()
>>> hola
ra.variables['foo']()
>>> TypeError: foo() missing 1 required positional argument: 'self'
ra.variables['bar'](debt = 300, equity=400)
>>> TypeError: bar() missing 1 required positional argument: 'self'
Run Code Online (Sandbox Code Playgroud)

有什么线索可能是什么问题?谢谢.-

Tur*_*urn 5

variables是一个类变量,但您正在尝试调用实例方法.尝试variables在对象初始化期间初始化:

class Testa(object):
    def __init__(self, debt = None, equity = None):
        self.debt = debt
        self.equity = equity
        self.variables = {'tutu': self.tutu, 'foo':self.foo, 'bar': self.bar}
    def tutu(self):
        print('hola')
    def foo(self):
        print('hello')
    def bar(self, debt=None, equity=None):
        return equity - debt
Run Code Online (Sandbox Code Playgroud)

  • `def tutu():`可能需要`self`参数. (2认同)