사용자 정의 클래스의 인스턴스에서 목록 (인스턴스) 또는 튜플 (인스턴스) 활성화

패트릭 다 실바

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"메서드를 구현하지만 자연스럽지 않습니다.

Kindall

__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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사전에 저장할 인스턴스화 된 클래스 목록을 포함하는 클래스의 구조

분류에서Dev

외부 클래스의 생성자에서 사용되는 클래스의 인스턴스 만들기

분류에서Dev

최소 속성 값으로 클래스 인스턴스의 튜플 목록 정렬

분류에서Dev

클래스 속성으로서의 인스턴스 목록

분류에서Dev

짧막 한 농담. 목록에있는 클래스 인스턴스의 메서드를 사용하여 히스토그램 플로팅

분류에서Dev

템플릿 클래스 생성자의 템플릿 인스턴스화

분류에서Dev

C ++ 템플릿 클래스 : 인수 목록과 일치하는 생성자의 인스턴스가 없습니다.

분류에서Dev

외부 클래스 생성자에서 내부 클래스의 인스턴스를 만드는 방법

분류에서Dev

목록 내의 모든 클래스 인스턴스에 메서드 적용

분류에서Dev

생성자가있는 클래스를 C ++의 템플릿 인스턴스화에서 형식 매개 변수로 사용

분류에서Dev

양식 코드에서 클래스의 공용 인스턴스를 인스턴스화 할 수 없습니다.

분류에서Dev

양식 코드에서 클래스의 공용 인스턴스를 인스턴스화 할 수 없습니다.

분류에서Dev

활동간에 사용자 정의 클래스 인스턴스 전달

분류에서Dev

사용자가 jQuery 플러그인의 두 인스턴스를 생성하도록 허용하는 방법

분류에서Dev

클래스가 템플릿의 템플릿 인스턴스화에서 상속되는지 확인

분류에서Dev

정의에서 클래스의 "공용"인스턴스를 얻는 방법

분류에서Dev

Python-목록 또는 임의 인스턴스에서 인스턴스를 만들 수 없습니다.

분류에서Dev

참조 클래스의 인스턴스를 활성화하는 방법

분류에서Dev

abstact 기본 클래스에서 상속 된 클래스 인스턴스의 새 클래스 인스턴스 생성 / 리셋 클래스 인스턴스

분류에서Dev

NLua를 사용하는 C # 클래스의 인스턴스

분류에서Dev

패치를 사용하여 인스턴스 속성에서 클래스를 모의하는 방법

분류에서Dev

파이썬 클래스는 자신의 인스턴스를 목록에 추가합니다.

분류에서Dev

PHP-부모 클래스 인스턴스의 모든 속성을 자식 인스턴스에 전달

분류에서Dev

사용자 정의 클래스 인스턴스가있는 operator.index

분류에서Dev

생성자의 인스턴스 이름을 알고있는 Matlab 클래스

분류에서Dev

사용자 지정 속성에 액세스하는 여러 인스턴스가있는 클래스 참조

분류에서Dev

Dagger2에서 종속성 그래프의 인스턴스를 인스턴스화하는 방법

분류에서Dev

클래스 내부의 변수를 사용하여 클래스를 인스턴스화하는 방법

분류에서Dev

클래스 내부의 변수를 사용하여 클래스를 인스턴스화하는 방법

Related 관련 기사

  1. 1

    사전에 저장할 인스턴스화 된 클래스 목록을 포함하는 클래스의 구조

  2. 2

    외부 클래스의 생성자에서 사용되는 클래스의 인스턴스 만들기

  3. 3

    최소 속성 값으로 클래스 인스턴스의 튜플 목록 정렬

  4. 4

    클래스 속성으로서의 인스턴스 목록

  5. 5

    짧막 한 농담. 목록에있는 클래스 인스턴스의 메서드를 사용하여 히스토그램 플로팅

  6. 6

    템플릿 클래스 생성자의 템플릿 인스턴스화

  7. 7

    C ++ 템플릿 클래스 : 인수 목록과 일치하는 생성자의 인스턴스가 없습니다.

  8. 8

    외부 클래스 생성자에서 내부 클래스의 인스턴스를 만드는 방법

  9. 9

    목록 내의 모든 클래스 인스턴스에 메서드 적용

  10. 10

    생성자가있는 클래스를 C ++의 템플릿 인스턴스화에서 형식 매개 변수로 사용

  11. 11

    양식 코드에서 클래스의 공용 인스턴스를 인스턴스화 할 수 없습니다.

  12. 12

    양식 코드에서 클래스의 공용 인스턴스를 인스턴스화 할 수 없습니다.

  13. 13

    활동간에 사용자 정의 클래스 인스턴스 전달

  14. 14

    사용자가 jQuery 플러그인의 두 인스턴스를 생성하도록 허용하는 방법

  15. 15

    클래스가 템플릿의 템플릿 인스턴스화에서 상속되는지 확인

  16. 16

    정의에서 클래스의 "공용"인스턴스를 얻는 방법

  17. 17

    Python-목록 또는 임의 인스턴스에서 인스턴스를 만들 수 없습니다.

  18. 18

    참조 클래스의 인스턴스를 활성화하는 방법

  19. 19

    abstact 기본 클래스에서 상속 된 클래스 인스턴스의 새 클래스 인스턴스 생성 / 리셋 클래스 인스턴스

  20. 20

    NLua를 사용하는 C # 클래스의 인스턴스

  21. 21

    패치를 사용하여 인스턴스 속성에서 클래스를 모의하는 방법

  22. 22

    파이썬 클래스는 자신의 인스턴스를 목록에 추가합니다.

  23. 23

    PHP-부모 클래스 인스턴스의 모든 속성을 자식 인스턴스에 전달

  24. 24

    사용자 정의 클래스 인스턴스가있는 operator.index

  25. 25

    생성자의 인스턴스 이름을 알고있는 Matlab 클래스

  26. 26

    사용자 지정 속성에 액세스하는 여러 인스턴스가있는 클래스 참조

  27. 27

    Dagger2에서 종속성 그래프의 인스턴스를 인스턴스화하는 방법

  28. 28

    클래스 내부의 변수를 사용하여 클래스를 인스턴스화하는 방법

  29. 29

    클래스 내부의 변수를 사용하여 클래스를 인스턴스화하는 방법

뜨겁다태그

보관