인스턴스 메서드 액세스
Python에서 객체에는 함수와 바인딩된 메서드라는 두 가지 유형의 메서드가 있습니다. 바인딩된 메서드는 특정 인스턴스와 연결되며 호출 시 해당 인스턴스를 첫 번째 인수로 전달합니다. 반면에 함수는 바인딩 해제되어 언제든지 수정될 수 있습니다.
차이점을 설명하려면 다음을 따르세요.
def foo(): print("foo") class A: def bar(self): print("bar") a = A() print(foo) # <function foo at 0x00A98D70> print(a.bar) # <bound method A.bar of <__main__.A instance at 0x00A9BC88>>
클래스 정의에 메서드 추가
클래스 정의를 수정하여 모든 인스턴스에 대해 새 메서드를 추가할 수 있습니다. 예를 들어 다음은 A 클래스에 fooFighters 메서드를 추가합니다.
def fooFighters(self): print("fooFighters") A.fooFighters = fooFighters a2 = A() a2.fooFighters() # fooFighters # Also affects previously defined instances a.fooFighters() # fooFighters
단일 인스턴스에 메서드 추가
개별 인스턴스에 메서드를 추가하는 것은 더 복잡합니다. 함수가 인스턴스에 바인딩되지 않았기 때문에 다음 시도는 실패합니다.
def barFighters(self): print("barFighters") a.barFighters = barFighters a.barFighters() # TypeError: barFighters() takes exactly 1 argument (0 given)
함수를 바인딩하려면 유형 모듈의 MethodType 함수를 사용하세요.
import types a.barFighters = types.MethodType(barFighters, a) a.barFighters() # barFighters # Other instances unaffected a2.barFighters() # AttributeError: A instance has no attribute 'barFighters'
설명자 추가 탐색 메타클래스 프로그래밍은 객체 메서드를 조작하기 위한 고급 기술을 제공합니다.
위 내용은 Python에서 인스턴스 메서드를 어떻게 추가하고 액세스합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!