字典中的方法未定义

时间:2018-11-25 09:38:59

标签: python dictionary methods

我在字典中有一个方法作为类属性;

class parentClass(object):
    pass

class childClass(parentClass):
    a = {'meth': my_meth}

    def my_meth(self, var):
        print(var)

inp = input()
# User enters 'meth' 
childClass.a[inp]('test')

运行程序时出现错误;

  

NameError:名称'my_meth'未定义

我读过的函数是python中的一等公民。如何在字典中将方法分配为值,以便以后可以使用某些参数进行调用?

2 个答案:

答案 0 :(得分:2)

class parentClass(object):
    pass

class childClass(parentClass):

    def __init__(self):

        self.a = {'meth': self.my_meth}

    def my_meth(self, var):
        print(var)


c = childClass()
c.a['meth']('test')

您必须在 __ init __ 中定义实例变量。

答案 1 :(得分:1)

您的代码存在的问题是,您将 a 设置为类中的静态变量,但是类中的方法不是静态的,需要 self 参数。

要解决此问题,可以通过在 __ init __ 方法中进行设置来使 a 变量与实例相关联:

class parentClass(object):
    pass

class childClass(parentClass):

    def __init__(self):
        self.a = {'meth': self.my_meth}

    def my_meth(self , var):
        print(var)

childClass().a['meth']('Helloworld')

或者可以将 my_meth 设为静态,从而能够从类本身进行调用,例如:

class parentClass(object):
    pass

class childClass(parentClass):


    def my_meth(var):
        print(var)

    a = {'meth': my_meth}

x = childClass.a['meth']("Helloworld")