Python의 동적 속성 추가
Python에서 클래스에 동적 속성을 추가하는 것은 독특한 과제입니다. 처음에는 setattr을 사용하여 클래스 인스턴스에 직접 속성을 추가하려고 시도할 수 있습니다. 그러나 이 접근 방식은 속성 개체를 속성에 할당하여 원하는 동작을 무효화합니다.
해결책
속성을 동적으로 추가하려면 속성을 수업 그 자체. 다음 예를 고려하십시오.
class Foo(object): pass foo = Foo() foo.a = 3 # Dynamically add property 'b' to class Foo.b = property(lambda self: self.a + 1) print(foo.b) # Outputs 4
설명자 이해
Python의 속성은 설명자를 사용하여 구현됩니다. 설명자는 특정 클래스에 대한 속성 액세스를 처리하는 개체입니다. 속성이 액세스, 설정 또는 삭제되는 방법을 정의하는 get__, __set__ 또는 __delete 메서드를 보유합니다.
Python은 foo에 액세스할 때 Foo.b.__get__(foo, Foo)를 호출합니다. b, 반환 값은 속성의 값이 됩니다. 이 경우 속성 설명자는 fget 메서드를 호출하여 인스턴스 값을 전달합니다.
설명자로서의 메서드 개체
메서드 자체는 또 다른 유형의 설명자입니다. get 메소드는 호출 인스턴스를 첫 번째 인수로 추가하여 인스턴스에 효과적으로 바인딩합니다.
요약하자면 Python에서 동적 속성을 추가하려면 Python의 기능을 활용하여 속성을 클래스 자체에 연결해야 합니다. 설명자 시스템. 이를 통해 클래스별로 속성을 사용자 정의 처리할 수 있습니다.
위 내용은 Python에서 클래스에 속성을 어떻게 동적으로 추가합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!