> 백엔드 개발 > 파이썬 튜토리얼 > 기존 Python 개체에 새 메서드를 어떻게 추가할 수 있나요?

기존 Python 개체에 새 메서드를 어떻게 추가할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-26 07:05:10
원래의
788명이 탐색했습니다.

How Can I Add New Methods to Existing Python Objects?

기존 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿