클래스 내에서 실행 가능 함수 사전을 생성하려고합니다. 그러나 자기 매개 변수가 제대로 작동하는 데 문제가 있습니다.클래스 내 함수 사전으로 self 매개 변수
class myclass(object):
def x(self):
return 'x'
def y(self):
return 'y'
EF= {
'a':x,
'b':y,
}
def test(self):
print self.EF['a']()
내가 클래스의 '테스트'기능을 실행하려고 할 때이 평가하고있는 기능 중 하나를 실행, 나는이 매개 변수의 수 주위에 오류가 발생합니다 :
다음 코드를 고려 사전.
>>> class myclass(object):
... def x(self):
... return 'x'
... def y(self):
... return 'y'
... EF= {
... 'a':x,
... 'b':y,
... }
... def test(self):
... print self.EF['a']()
...
>>>
>>>
>>> m=myclass()
>>> m.test()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 11, in test
TypeError: x() takes exactly 1 argument (0 given)
몇 가지 변형을 시도해 보았습니다. 내가 명시 적으로 다음과 같이 매개 변수로 자기를 통과 할 때
EF= {
'a':self.x,
'b':self.y,
}
작업을했던 유일한
이었다.... def test(self):
... print self.EF['a'](self)
...
>>> m=myclass()
>>> m.test()
x
사전을 색인 함수로 사용하는 것에 대해서는 다른 질문이 있지만 클래스에는 없습니다.
여기 내 질문은 :
- 자기 매개 변수를 처리 할 수있는 적절한 방법은 무엇입니까?
- 사전 상수를 상수 섹션으로 옮기는 것을 선호합니다. 그렇게 할 수 있습니까? 그렇다면 어떻게 할 수 있습니까? 나는 그것을해야합니까?
- 수업 중에 내 사전을 가져야 만한다면 왜 수업의 맨 위로 옮길 수 없습니까?
그게 전부입니다. 도와 주셔서 감사합니다.
좋아 보이지만 나는 투표에서 벗어났습니다 ... 다시. –
좋습니다. 좋은 설명뿐. 감사. 클래스 내의 클래스에서만 사용되는 상수를 선언하거나 __init__ 함수에서 상수를 선언하는 것이 좋습니다. –
@WesModes 실제로 파이썬에서 상수의 개념은 없지만 언제나 ['@ property'] (https://docs.python.org/2/library/functions.html#property) 데코레이터를 사용하여 귀하의 필요를 성취하십시오. 이 링크도 참조하십시오. http://stackoverflow.com/questions/2682745/creating-constant-in-python –