python - 함수 - 파이썬__




메소드 이름을 변수에 할당하여 클래스 내의 메소드를 동적으로 호출하는 방법 (2)

두가지:

  1. 8 번째 라인에서,

    func_name = '함수'+ str (self.i)

  2. 기능 매핑을위한 문자열을 다음과 같이 정의하십시오.

      self.func_options = {'function1': self.function1,
                           'function2': self.function2
                           }
    
  3. 그래서 그것은 다음과 같이 보일 것입니다.

    MyClass 클래스 :

    def __init__(self, i):
          self.i = i
          self.func_options = {'function1': self.function1,
                               'function2': self.function2
                               }
    def get(self):
          func_name = 'function' + str(self.i)
          func = self.func_options[func_name]
          func() # <-- this does NOT work.
    
    def function1(self):
          //do something
    
    def function2(self):
          //do something
    

이 질문에는 이미 답변이 있습니다.

class MyClass:

    def __init__(self, i):
          self.i = i

    def get(self):
          func_name = 'function' + self.i
          self.func_name() # <-- this does NOT work.

    def function1(self):
          //do something

    def function2(self):
          //do something

오류 : TypeError : 'str'개체를 호출 할 수 없습니다.

누군가가 도와 주실 수 있을까요? 나는 많은 순열과 조합을 시도했지만 아무 소용이 없다! (참고 : 'self.func_name'도 작동하지 않음)


def get(self):
      def func_not_found(): # just in case we dont have the function
         print "No Function "+self.i+" Found!"
      func_name = 'function' + self.i
      func = getattr(self,func_name,func_not_found) 
      func() # <-- this should work!




python