int, set, dict, list, tuple 등과 같은 표준 유형 생성자를 사용하여 사용자 정의 클래스의 인스턴스를 사용자 정의 방식으로 해당 유형 중 하나로 강제 변환하는 방법이 있습니까? 예를 들면
class Example:
def __init__(self):
self.a=1
self.b=2
그리고
>>> ex = Example()
>>> dict(ex)
{"a":1, "b":2}
가능한지, 가능하다면 클래스 정의에 무엇을 추가해야하는지 모르겠습니다. 지금은 이것이 필요하고 객체에 대해 호출하는 "as_dict"메서드를 구현하지만 자연스럽지 않습니다.
__iter__()
메소드 를 추가하여 유형을 반복 가능하게 만드십시오 . 간단하게 :
class Example:
def __init__(self):
self.a = 1
self.b = 2
def __iter__(self):
yield "a", self.a
yield "b", self.b
이렇게하면 이름 / 값 쌍을 포함하는 일련의 튜플이 생성 dict()
되며 사용하기에 좋습니다.
dict(Example()) # {'a': 1, 'b': 2}
물론 거기에는 자신을 반복하는 것이 많이 있습니다. 따라서 대신 __iter__()
미리 정의 된 속성 목록으로 작업하도록 작성할 수 있습니다.
def __iter__(self):
names = "a", "b"
for name in names:
yield name, getattr(self, name)
또한 인스턴스의 모든 속성을 검사 하여 값이 호출 가능한 속성을 생략하도록 할 수도 있습니다 .
def __iter__(self):
names = dir(self)
for name in names:
value = getattr(self, name)
if not callable(value):
yield name, value
또는 인스턴스 __dict__
에 직접 저장된 속성 만 포함 하는 인스턴스의 속성 에서 양보 하도록합니다 ( dir()
위 의 메서드는 상속 된 속성도 찾습니다).
def __iter__(self):
yield from self.__dict__.items()
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다