как вызвать метод в той же самой диктовке, используя python - PullRequest
1 голос
/ 16 марта 2011

это мой код:

a= {'u': lambda x: x*x,'b':self.u(5)}

print a['u'](5)
print a['b']

но он показывает ошибку:

Traceback (most recent call last):
  File "a.py", line 6, in <module>
    a= {'u': lambda x: x*x,'b':self.u(5)}
NameError: name 'self' is not defined

так как печатать ['b']

спасибо

Ответы [ 2 ]

5 голосов
/ 16 марта 2011

Первая мысль: почему вы вместо этого не используете класс?

class A:
    def u(x):
        return x*x
    def b():
        return self.u(5)
a = A()

Вторая мысль: если вам действительно нужно сделать это с помощью словаря (но на самом деле вы должны?), Попробуйте это:

a = {'u': lambda x: x*x}
a['b'] = a['u'](5)

Поскольку вы не реализуете метод объекта, self.

не существует.
0 голосов
/ 16 марта 2011

Я не уверен, почему вы хотите сделать это, но это невозможно, вместо этого вы можете назначить диктовать один за другим, например,

a= {'u': lambda x: x*x}
a['b'] = a['u'](5)

или сначала определить функцию, а затем использовать ее, например,

f = lambda x: x*x
a= {'u': f, 'b': f(5)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...