dir 함수별로 나열된 속성 목록 변경

Gerard

다음 클래스의 인스턴스가 있다고 가정합니다.

class Foo(object):
    def __init__(self, data):
        self._data = data

foo = Foo({'bar': 'baz'})

당신이 dir(foo)얻을 :

>>> dir(foo)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_data']

_data속성 목록 끝에있는 참고

dir내 클래스의 인스턴스에 대한 출력 을 사용자 정의하는 방법을 갖고 싶습니다 . 이 특정 경우에는 _data사전 에 키-값 쌍을 추가하여 다음과 같이 이전 출력에 추가 항목으로 나열하고 싶습니다.

>>> dir(foo)
['__class__', '__delattr__', ..., '_data', 'bar']

참고 _databar재산 목록의 끝에서

내가있을 것이라고 생각 특별한 당신과 함께 인스턴스 사용자 정의 할 수 있습니다처럼 비슷한 방법으로이 사용자 정의 기능 __str__, __repr__등을하지만, 아직 아무것도 발견하지 않았습니다.

업데이트 : __dict__다음과 같은 인스턴스 변경하지 않고 표시 할 속성 만 변경하는 것을 찾고 있습니다 .

class Foo(object):
    def __init__(self, data):
        self._data = data
        self.__dict__.update(data)  # I would prefer not to do this

이것을 할 방법이 있습니까? 도움에 미리 감사드립니다!

jme

네, 이것이 __dir__특별한 방법 의 목적입니다 . 에 대한 python 문서를dir() 참조하십시오 .

예를 들면 :

class Foo(object):

    def __init__(self, data):
        self._data = data

    def __dir__(self):
        return dir(object) + self.__dict__.keys() + [k for k in self._data]

foo = Foo({'bar': 'baz'})

이것은 다음을 제공합니다.

>>> foo = Foo()
>>> dir(foo)
['__class__',
 '__delattr__',
 '__doc__',
 '__format__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '_data',
 'bar']

아마 유일한 정말 당신이 정의하는 경우이 작업을 수행하는 의미 수 있습니다 __getattr__또는 __getattribute__잘 그래서 사용자가 같은 것을 쓸 수로 foo.bar, 그렇지 않으면 dir()일종의 오해의 소지가 될 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

나는이에서 생성 된 배열을 변경할 때 내 목록을 수정하는 이유

분류에서Dev

동적 변수에 따라 dir 속성 변경

분류에서Dev

Automapper는 여러 속성을 배열 / 목록으로 변환

분류에서Dev

특정 속성에서 새로운, 변경, 업데이트 된 객체의 두 목록을 비교합니다.

분류에서Dev

명령으로 생성 된 목록에서 패키지 재설치 : ado dir

분류에서Dev

구성에 따라 로그인 후 ssh가 dir을 변경하도록 강제

분류에서Dev

다른 목록 속성의 하위 집합을 반환하지만 변경할 수있는 목록 속성

분류에서Dev

문자열 목록을 매개 변수로 취하고 각 문자열의 길이가 포함 된 목록을 반환하는 함수를 작성합니다.

분류에서Dev

목록의 다른 항목을 기반으로 속성 변경 방지

분류에서Dev

문자열 목록을 정수 목록으로 변경

분류에서Dev

AliasToBean 변환기를 사용하여 쉼표로 구분 된 DTO 문자열 속성에 개체 속성의 항목 목록 매핑을 통한 Nhibernate 쿼리

분류에서Dev

두 목록을 비교하고 하나의 속성을 변경하는 방법

분류에서Dev

클래스의 속성을 비교하여 변경된 항목 식별

분류에서Dev

Swift 3 : 속성별로 정렬 된 객체 목록 정렬

분류에서Dev

목록을 문자열로 변경

분류에서Dev

번호 매기기 목록의 신속한 생성 배열 변수

분류에서Dev

Json 객체 배열을 angularjs의 속성 값 목록으로 변환

분류에서Dev

불변 목록에 빈 값이 포함 된 경우 버튼 비활성화

분류에서Dev

ID별로 그룹화 된 목록의 변경 사항 계산

분류에서Dev

목록 속성을 포함하는 HashMap을 Object로 변환

분류에서Dev

수정 된 날짜별로 목록 상자에 파일 나열

분류에서Dev

중첩 된 json 값 목록을 배열로 변경

분류에서Dev

목록을 PHP의 연관 배열 목록으로 변경

분류에서Dev

객체가 포함 된 목록을 해당 객체의 특정 기능 또는 속성을 포함하는 목록으로 변환

분류에서Dev

하나의 목록에 하나의 문자열 만 포함 된 경우 두 목록을 쉼표로 구분 된 문자열과 비교

분류에서Dev

제공된 목록과 일치하도록 속성별로 개체 배열 정렬

분류에서Dev

C의 포인터. 함수별로 목록 포인터의 시작 변경

분류에서Dev

파이썬 객체의 숨겨진 속성을 찾는 방법은 무엇입니까? (dir (obj) 목록에 나타나지 않는 속성)

분류에서Dev

문자열 목록을 정수 목록 목록으로 변환

Related 관련 기사

  1. 1

    나는이에서 생성 된 배열을 변경할 때 내 목록을 수정하는 이유

  2. 2

    동적 변수에 따라 dir 속성 변경

  3. 3

    Automapper는 여러 속성을 배열 / 목록으로 변환

  4. 4

    특정 속성에서 새로운, 변경, 업데이트 된 객체의 두 목록을 비교합니다.

  5. 5

    명령으로 생성 된 목록에서 패키지 재설치 : ado dir

  6. 6

    구성에 따라 로그인 후 ssh가 dir을 변경하도록 강제

  7. 7

    다른 목록 속성의 하위 집합을 반환하지만 변경할 수있는 목록 속성

  8. 8

    문자열 목록을 매개 변수로 취하고 각 문자열의 길이가 포함 된 목록을 반환하는 함수를 작성합니다.

  9. 9

    목록의 다른 항목을 기반으로 속성 변경 방지

  10. 10

    문자열 목록을 정수 목록으로 변경

  11. 11

    AliasToBean 변환기를 사용하여 쉼표로 구분 된 DTO 문자열 속성에 개체 속성의 항목 목록 매핑을 통한 Nhibernate 쿼리

  12. 12

    두 목록을 비교하고 하나의 속성을 변경하는 방법

  13. 13

    클래스의 속성을 비교하여 변경된 항목 식별

  14. 14

    Swift 3 : 속성별로 정렬 된 객체 목록 정렬

  15. 15

    목록을 문자열로 변경

  16. 16

    번호 매기기 목록의 신속한 생성 배열 변수

  17. 17

    Json 객체 배열을 angularjs의 속성 값 목록으로 변환

  18. 18

    불변 목록에 빈 값이 포함 된 경우 버튼 비활성화

  19. 19

    ID별로 그룹화 된 목록의 변경 사항 계산

  20. 20

    목록 속성을 포함하는 HashMap을 Object로 변환

  21. 21

    수정 된 날짜별로 목록 상자에 파일 나열

  22. 22

    중첩 된 json 값 목록을 배열로 변경

  23. 23

    목록을 PHP의 연관 배열 목록으로 변경

  24. 24

    객체가 포함 된 목록을 해당 객체의 특정 기능 또는 속성을 포함하는 목록으로 변환

  25. 25

    하나의 목록에 하나의 문자열 만 포함 된 경우 두 목록을 쉼표로 구분 된 문자열과 비교

  26. 26

    제공된 목록과 일치하도록 속성별로 개체 배열 정렬

  27. 27

    C의 포인터. 함수별로 목록 포인터의 시작 변경

  28. 28

    파이썬 객체의 숨겨진 속성을 찾는 방법은 무엇입니까? (dir (obj) 목록에 나타나지 않는 속성)

  29. 29

    문자열 목록을 정수 목록 목록으로 변환

뜨겁다태그

보관