계속 오류가 발생합니다.
AttributeError: 'NoneType' object has no attribute 'something'
내가 가진 코드는 여기에 게시하기에 너무 깁니다. 일반적인 시나리오는이 원인이 무엇 AttributeError
무엇입니다 NoneType
뜻이며 어떻게 무슨 일이 일어나고 있는지를 좁힐 수 있습니까?
답변
NoneType은 작업하고 있다고 생각하는 클래스 또는 객체의 인스턴스 대신 실제로 None
합니다. 이는 일반적으로 위의 할당 또는 함수 호출이 실패했거나 예기치 않은 결과를 반환했음을 의미합니다.
답변
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
입니다.
이런 일이 발생하는 일반적인 방법은 a가없는 함수를 호출하는 것입니다 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
.