모두. 아래 예를 참조하십시오. 'schedule_action'메서드에 문자열을 제공하여 어떤 Bot 클래스 메서드를 호출해야하는지 지정하고 싶습니다. 아래의 예제에서 'bot.action()'으로 표현했지만 제대로 수행하는 방법을 모릅니다.Python 스크립트가 실행 중입니다. 메서드 이름이 문자열입니다. 이 메서드는 어떻게 호출합니까?
getattr(bot, action)()
getattr은 이름으로 객체에 속성을 볼 것이다 한마디로
class Bot:
def work(self): pass
def fight(self): pass
class Scheduler:
def schedule_action(self,action):
bot = Bot()
bot.action()
scheduler = Scheduler()
scheduler.schedule_action('fight')
이 옵션을 강력히 고려하십시오. 호출 할 메소드를 동적으로 선택하려면이 옵션이 적합 할 수 있습니다. 파일, 소켓 또는 사용자 입력에서 파일을 읽는 것과 같이 회귀 방식으로 이름을 생성하는 경우에만 getattr 기반 옵션을 사용하십시오. – Wesley
설명 된 상황에서 오류가 더 빨리 발생하지만 컴파일 타임에 오류가 발생하지 않는 것은 사실입니다. –
아, 맞아. 수정 된 게시물. –