关于python:字典中类内的函数

Functions within classes in dictionary

我试图将一个在类中生成的函数放入字典中,但是不断地得到一个错误:没有定义"name""eggs"。这就是我迄今为止所尝试的,

1
2
3
4
5
class spam(object):
    def __init__(self,my_dict={'eggs',eggs}):
        self.my_dict=my_dict
    def eggs(self):
        print('eggs')

我也试过在课堂外使用

1
2
3
4
5
6
7
class spam(object):
    def __init__(self,my_dict):
        self.my_dict=my_dict
    def eggs(self):
        print('eggs')

my_dict={'eggs':eggs}

我还试着用以下词替换那本词典:

1
2
3
{'eggs':eggs()}
{'eggs':spam.eggs}
{'eggs':spam.eggs()}

有人能告诉我如何创建这本字典,或者用另一种方法基于字符串输入来调用这个函数吗?


__init__()中创建字典。

1
2
3
4
5
class spam(object):
  def __init__(self, my_dict=None):
    if my_dict is None:
      my_dict = {'eggs': self.eggs}
    self.my_dict = my_dict

如果要存储原始方法而不是绑定实例方法,请使用spam.eggstype(self).eggs(两者的语义略有不同)。


在类外部,eggs是一个非静态类方法,因此没有类实例(如

1
{'eggs': spam().eggs}

如果您想,可以考虑使用静态方法

1
2
3
@staticmethod
def eggs ():
    print('eggs')

所以像EDOCX1[1]这样的东西会起作用。


必须创建类的实例才能访问该函数。你可以在课堂外做:

1
{'eggs':spam().eggs}