> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 인스턴스 메서드를 어떻게 추가하고 액세스합니까?

Python에서 인스턴스 메서드를 어떻게 추가하고 액세스합니까?

Susan Sarandon
풀어 주다: 2024-12-20 17:38:10
원래의
727명이 탐색했습니다.

How Do I Add and Access Instance Methods in Python?

인스턴스 메서드 액세스

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

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