파이썬에서 getattr 메서드를 재정의하는 동안 무한 루프가없는 이유

Vinit89

getattr 메서드를 재정의하려고 시도 중이며 기본 개체 로 다음 코드 조각에 무한 루프가 있어야 합니다 .__ getattribute __ (self, attr) 속성이 'notpresent'가 없으므로 재정의 된 getattr 메서드를 호출합니다. 네임 스페이스와이 프로세스는 계속 반복됩니다. 이 행동이 여기에서 관찰되지 않는 이유를 알아내는 데 아무도 나를 도울 수 있습니까?

또한 메서드 내에서 getattribute를 명시 적으로 호출하려고 할 때 두 번째로 발생하는 동안 점 표기법을 사용하여 속성에 액세스하는 동안 getattribute에 대한 암시 적 호출이 수행 될 때 AttributeError가 발생하지 않는 이유를 알 수 없습니다.

class Test(object):

    #Act as a fallback and is invoked when getattribute is unable to find attribute

    def __getattr__(self,attr):

        print "getattr is called"
        return object.__getattribute__(self,attr) #AttributeError is raised

t=Test([1,2,3,4])

b = t.notpresent
301_Moved_Permanently

object.__getattribute__내에서 전화하고 있습니다 Test.__getattr__.

여기에는 루프가 없습니다.

또한,에 따라 워드 프로세서 , __getattribute__암시 적으로 호출하지 않습니다 __getattr__.

편집 후 업데이트

다음__getattribute__호출 의 C 구현입니다 . 특히 slot_tp_getattr_hook부분.

귀하의 경우 속성 조회 실패로 인해 사용자 지정 __getattr__함수 를 호출하는 6072 줄이 실행 됩니다.

그 이후로가 AttributeError삭제되었습니다. 하지만에 대한 전화가 object.__getattribute__다시 설정되고 6074 또는 6075 번 회선에서 처리하지 않습니다.

object.__getattribute__호출 구현 과 같이 함으로써 (재) 레이즈 AttributeError(라인 1107).

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

문장이 파이썬에서 무한 루프에 붙어있는 동안

분류에서Dev

enum 메서드를 재정의하는 동안 이상한 동작. getClass (). getInterfaces ()가 제대로 작동합니까?

분류에서Dev

파이썬의 sorted () 메서드가 사전에서 동일한 값을 가진 키의 순서를 바꾸지 않는 이유는 무엇입니까?

분류에서Dev

파이썬에서 매우 이상한 __getattr__ 동작

분류에서Dev

파이썬에서 "getattr (self, 'something') is true"는 무엇을 의미합니까?

분류에서Dev

파이썬에서 "getattr (self, 'something') is true"는 무엇을 의미합니까?

분류에서Dev

파이썬에서 추상 메서드를 재정의 할 때 인수를 제한하는 방법

분류에서Dev

파이썬 클래식 클래스에서 기본 동작을 중단하지 않고 __getattr__ 메서드를 구현하는 방법

분류에서Dev

실행 메서드의 getattr에서 AttributeError가 발생하는 이유는 무엇입니까?

분류에서Dev

클라이언트 측 연결을 닫는 동안 서버가 무한 루프에 들어가는 이유

분류에서Dev

Java 코드에서 메서드 재정의가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

여기에 중첩 루프를 사용하는 동안 파이썬이 이상한 결과를 인쇄하는 이유는 무엇입니까?

분류에서Dev

파이썬 목록을 반복하는 동안 요소를 수정할 때 이러한 종류의 동작 뒤에있는 이유는 무엇입니까

분류에서Dev

루프가 파이썬에서 기능을 뛰어 넘는 동안?

분류에서Dev

파이썬에서 루프에 대한 색인 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

동일한 csv 파일을 읽는 동안 중첩 된 for 루프가 파이썬에서 작동하지 않습니다.

분류에서Dev

파이썬에서 getattr로 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

Laravel AuthController에서 trait 메서드를 재정의하는 것이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

hashCode 메서드를 재정의하는 이유는 무엇입니까?

분류에서Dev

hashCode 메서드를 재정의하는 이유는 무엇입니까?

분류에서Dev

파이썬 클래스 메서드에서 무한 재귀를 피하는 방법

분류에서Dev

루프가 무작위로 반복되는 동안 이유를 알 수 없습니다.

분류에서Dev

루프 중첩 순서가 파이썬에 중요한 이유는 무엇입니까?

분류에서Dev

VB.Net에서 속성을 정의하는 동안 GET 및 SET 메서드를 사용하는 이유는 무엇입니까?

분류에서Dev

for 루프가 (scanner) .nextLine ();을 사용하는 동안 한 번에 두 개의 프롬프트를 인쇄하는 이유는 무엇입니까?

분류에서Dev

IndexError : 무언가를 찾을 수없는 동안 파이썬에서 범위를 벗어난 인덱스 목록

분류에서Dev

파이썬에서 for 루프를 반복하는 동안 예외를 만드는 방법

분류에서Dev

파이썬에서 주어진 하루의 몇 시간 동안 반복하는 방법은 무엇입니까?

분류에서Dev

"for"루프를 사용하는 동안 파이썬 3 정수형 반복 문제가 발생하는 이유

Related 관련 기사

  1. 1

    문장이 파이썬에서 무한 루프에 붙어있는 동안

  2. 2

    enum 메서드를 재정의하는 동안 이상한 동작. getClass (). getInterfaces ()가 제대로 작동합니까?

  3. 3

    파이썬의 sorted () 메서드가 사전에서 동일한 값을 가진 키의 순서를 바꾸지 않는 이유는 무엇입니까?

  4. 4

    파이썬에서 매우 이상한 __getattr__ 동작

  5. 5

    파이썬에서 "getattr (self, 'something') is true"는 무엇을 의미합니까?

  6. 6

    파이썬에서 "getattr (self, 'something') is true"는 무엇을 의미합니까?

  7. 7

    파이썬에서 추상 메서드를 재정의 할 때 인수를 제한하는 방법

  8. 8

    파이썬 클래식 클래스에서 기본 동작을 중단하지 않고 __getattr__ 메서드를 구현하는 방법

  9. 9

    실행 메서드의 getattr에서 AttributeError가 발생하는 이유는 무엇입니까?

  10. 10

    클라이언트 측 연결을 닫는 동안 서버가 무한 루프에 들어가는 이유

  11. 11

    Java 코드에서 메서드 재정의가 작동하지 않는 이유는 무엇입니까?

  12. 12

    여기에 중첩 루프를 사용하는 동안 파이썬이 이상한 결과를 인쇄하는 이유는 무엇입니까?

  13. 13

    파이썬 목록을 반복하는 동안 요소를 수정할 때 이러한 종류의 동작 뒤에있는 이유는 무엇입니까

  14. 14

    루프가 파이썬에서 기능을 뛰어 넘는 동안?

  15. 15

    파이썬에서 루프에 대한 색인 오류가 발생하는 이유는 무엇입니까?

  16. 16

    동일한 csv 파일을 읽는 동안 중첩 된 for 루프가 파이썬에서 작동하지 않습니다.

  17. 17

    파이썬에서 getattr로 함수를 호출하는 방법은 무엇입니까?

  18. 18

    Laravel AuthController에서 trait 메서드를 재정의하는 것이 작동하지 않는 이유는 무엇입니까?

  19. 19

    hashCode 메서드를 재정의하는 이유는 무엇입니까?

  20. 20

    hashCode 메서드를 재정의하는 이유는 무엇입니까?

  21. 21

    파이썬 클래스 메서드에서 무한 재귀를 피하는 방법

  22. 22

    루프가 무작위로 반복되는 동안 이유를 알 수 없습니다.

  23. 23

    루프 중첩 순서가 파이썬에 중요한 이유는 무엇입니까?

  24. 24

    VB.Net에서 속성을 정의하는 동안 GET 및 SET 메서드를 사용하는 이유는 무엇입니까?

  25. 25

    for 루프가 (scanner) .nextLine ();을 사용하는 동안 한 번에 두 개의 프롬프트를 인쇄하는 이유는 무엇입니까?

  26. 26

    IndexError : 무언가를 찾을 수없는 동안 파이썬에서 범위를 벗어난 인덱스 목록

  27. 27

    파이썬에서 for 루프를 반복하는 동안 예외를 만드는 방법

  28. 28

    파이썬에서 주어진 하루의 몇 시간 동안 반복하는 방법은 무엇입니까?

  29. 29

    "for"루프를 사용하는 동안 파이썬 3 정수형 반복 문제가 발생하는 이유

뜨겁다태그

보관