함수 구현을 동적으로 할당하려고합니다.Python에서 동적으로 함수 구현을 할당합니다.
의 다음 시작하자 : 다른 언어
class Doer(object):
def __init__(self):
self.name = "Bob"
def doSomething(self):
print "%s got it done" % self.name
def doItBetter(self):
print "Done better"
우리가 익명 함수를 doItBetter하고 객체에 할당한다. 그러나 Python에서 익명 함수를 지원하지 않습니다. 나는 개체의 인스턴스로에 호출을 할당했는데, 마지막으로
Traceback (most recent call last): Line 13, in doer.doSomething() Line 9, in call print "%s got it done better" % self.name AttributeError: 'DoItBetter' object has no attribute 'name'
대신, 우리는 호출 클래스 인스턴스를 만드는 시도하고 클래스에 그를 할당 할 수 있습니다 :
class Doer(object):
def __init__(self):
self.name = "Bob"
class DoItBetter(object):
def __call__(self):
print "%s got it done better" % self.name
Doer.doSomething = DoItBetter()
doer = Doer()
doer.doSomething()
저에게이 있습니다 내가 DoItBetter에 자신을 참조하지 않는
이class Doer(object):
def __init__(self):
self.name = "Bob"
class DoItBetter(object):
def __call__(self):
print "%s got it done better" % self.name
doer = Doer()
doer.doSomething = DoItBetter()
doer.doSomething()
이 한 일을 않지만, 내가 할 때 참조 있기 때문에 그것은 self.name
에 나에게 이름 오류가 있습니다 : 속성과 호출 호출 원의 self
은 소유 클래스 self
이 아닙니다.
그래서 익명의 함수를 클래스 함수 나 인스턴스 메서드에 할당하려고합니다. 메서드 호출은 개체의 self
을 참조 할 수 있습니다.
거부 한 첫 번째 접근 방식에 아무런 문제가 없습니다. 왜 그렇게 복잡한가? –
오류가 정말 이상합니다 - 루비 인터프리터로 파이썬 스크립트를 실행하려고합니까? (파일 이름은'prog.rb','.py'는 파이썬 파일 확장자입니다.) 오류는 파이썬에서 분명히 아닙니다 -'self'는 파이썬에서 키워드가 아닙니다. –
내 실수로 루비 설정이있는 온라인 코드 패드에서 실행했습니다. – Yarin