AttributeError : 'NoneType'개체에 'something'특성이없는 이유는 무엇입니까?
계속 오류가 발생합니다.
AttributeError: 'NoneType' object has no attribute 'something'
내가 가진 코드는 여기에 게시하기에 너무 깁니다. 일반적인 시나리오는이 원인이 무엇 AttributeError
무엇입니다 NoneType
뜻이며 어떻게 무슨 일이 일어나고 있는지를 좁힐 수 있습니까?
NoneType은 작업하고 있다고 생각하는 클래스 또는 객체의 인스턴스 대신 실제로를 가지고 있음을 의미 None
합니다. 이는 일반적으로 위의 할당 또는 함수 호출이 실패했거나 예기치 않은 결과를 반환했음을 의미합니다.
없음과 동일한 변수가 있고 'something'이라는 속성에 액세스하려고합니다.
foo = None
foo.something = 1
또는
foo = None
print foo.something
둘 다 AttributeError: 'NoneType'
다른 사람들 NoneType
은 정의와 함께 끝나는 일반적인 방법을 설명 했습니다 (즉, 함수에서 값을 반환하지 못함).
None
예상치 못한 다른 일반적인 이유 는 변경 가능한 객체에 대한 내부 작업 할당입니다. 예를 들면 다음과 같습니다.
mylist = mylist.sort()
sort()
리스트 의 메소드는리스트를 적절하게 정렬합니다 mylist
. 즉, 수정됩니다. 그러나 메소드의 실제 리턴 값은 None
정렬 된 목록이 아닙니다. 에 방금 배정 None
되었습니다 mylist
. 다음에 시도하면 mylist.append(1)
파이썬 이이 오류를 줄 것입니다.
는 NoneType
값의 종류이다 None
. 이 경우 변수 lifetime
의 값은 None
입니다.
이런 일이 발생하는 일반적인 방법은을없는 함수를 호출하는 것입니다 return
.
그러나 변수를 없음으로 설정하는 방법에는 무한한 방법이 있습니다.
아래 코드를 고려하십시오.
def return_something(someint):
if someint > 5:
return someint
y = return_something(2)
y.real()
이것은 당신에게 오류를 줄 것입니다
AttributeError : 'NoneType'개체에 'real'특성이 없습니다.
따라서 포인트는 다음과 같습니다.
- 코드에서 함수 또는 클래스 메서드가 아무것도 반환하지 않거나 None을 반환하지 않습니다
- 그런 다음 반환 된 객체 (없음)의 속성에 액세스하려고하면 오류 메시지가 발생합니다.
액세스하려는 개체를 의미합니다 None
. 파이썬 None
의 Null
변수입니다. 이 유형의 오류는 코드에서 발생하며 다음과 같습니다.
x1 = None
print(x1.something)
#or
x1 = None
x1.someother = "Hellow world"
#or
x1 = None
x1.some_func()
# you can avoid some of these error by adding this kind of check
if(x1 is not None):
... Do something here
else:
print("X1 variable is Null or None")
gddc는 옳지 만 매우 빈번한 예를 추가합니다.
이 함수를 재귀 형식으로 호출 할 수 있습니다. 이 경우 널 포인터 또는로 끝날 수 있습니다 NoneType
. 이 경우이 오류가 발생할 수 있습니다. 따라서 해당 매개 변수의 속성에 액세스하기 전에이 아닌지 확인하십시오 NoneType
.
'IT' 카테고리의 다른 글
인증 및 권한 부여 실패로 AuthorizeAttribute가 로그인 페이지로 리디렉션되는 이유는 무엇입니까? (0) | 2020.04.01 |
---|---|
Java for-each 루프에서 반복 카운터에 액세스하는 방법이 있습니까? (0) | 2020.04.01 |
Java에서 일반 배열 유형을 만들 수없는 이유는 무엇입니까? (0) | 2020.04.01 |
시리즈의 진실 가치는 모호합니다. (0) | 2020.04.01 |
C ++에 가비지 수집기가없는 이유는 무엇입니까? (0) | 2020.04.01 |