我在字典中有一个方法作为类属性;
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中的一等公民。如何在字典中将方法分配为值,以便以后可以使用某些参数进行调用?
答案 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")