기존 Python 개체에 추가 메서드 연결
Python에서는 일반적으로 기존 개체의 메서드를 수정하는 것이 바람직하지 않지만 특정 상황에서는 , 필요할 수도 있습니다. 이 문서에서는 인스턴스가 생성된 후 인스턴스에 메서드를 추가하는 방법을 살펴보고 함수와 바인딩된 메서드 간의 차이점을 강조합니다.
함수와 바인딩된 메서드 이해
Python의 경우 , 함수는 바인딩 해제되지만 바인딩된 메서드는 특정 인스턴스와 연결됩니다. 바인딩된 메서드가 호출되면 인스턴스가 자동으로 첫 번째 인수로 전달됩니다. 이 바인딩은 메서드가 클래스 정의에 정의될 때 발생합니다.
클래스 수준 메서드 업데이트
클래스 수준에서 정의된 메서드를 수정하는 것은 간단합니다. 클래스의 메소드 속성에 새 함수를 할당하면 됩니다.
class A: def bar(self): print("bar") A.fooFighters = fooFighters
이 변경 사항은 기존 인스턴스를 포함하여 클래스의 모든 인스턴스에 적용됩니다.
인스턴스 추가- 특정 메서드
개별 인스턴스에 메서드를 연결하는 것은 더 복잡합니다. 인스턴스의 속성에 함수를 직접 할당하면 바인딩된 메서드가 생성되지 않으므로 인수가 없는 상태로 호출하면 오류가 발생합니다.
단일 인스턴스에 대한 바인딩된 메서드를 만들려면 다음에서 MethodType 함수를 사용할 수 있습니다. 유형 모듈:
import types a.barFighters = types.MethodType(barFighters, a)
이제 a.barFighters()가 호출되면 메소드가 인스턴스에 바인딩되며 추가 작업 없이 호출할 수 있습니다.
인스턴스 격리 유지
인스턴스별 메서드를 수정해도 동일한 클래스의 다른 인스턴스에는 영향을 미치지 않는다는 점에 유의하는 것이 중요합니다. 각 인스턴스는 메소드를 포함하여 자체 속성 세트를 유지합니다.
위 내용은 기존 Python 개체에 새 메서드를 어떻게 추가할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!