계속 오류가 발생합니다.
AttributeError: 'NoneType' object has no attribute 'something'
내가 가진 코드는 여기에 게시하기에 너무 깁니다. 일반적인 시나리오는이 원인이 무엇 AttributeError
무엇입니다 NoneType
뜻이며 어떻게 무슨 일이 일어나고 있는지를 좁힐 수 있습니까?
None
.
계속 오류가 발생합니다.
AttributeError: 'NoneType' object has no attribute 'something'
내가 가진 코드는 여기에 게시하기에 너무 깁니다. 일반적인 시나리오는이 원인이 무엇 AttributeError
무엇입니다 NoneType
뜻이며 어떻게 무슨 일이 일어나고 있는지를 좁힐 수 있습니까?
None
.
답변:
None과 같은 변수가 있고 'something'이라는 속성에 액세스하려고합니다.
foo = None
foo.something = 1
또는
foo = None
print foo.something
둘 다 AttributeError: 'NoneType'
None
무언가를 얻는 방법을 지적 할 때까지 이것은 아마도 도움이되지 않습니다. 명백한 foo = None
것이 문제가되지는 않습니다. 될 것 foo = something()
당신은 모르고 something()
반환 할 수 있습니다 None
그것은 성공하지 못한, 또는 결과 세트가 비어 있거나 어떤 때.
다른 사람들은 무엇을 설명했습니다 NoneType
은 정의와 함께 끝나는 일반적인 방법을 했습니다 (즉, 함수에서 값을 반환하지 못함).
None
예상치 못한 다른 일반적인 이유 는 변경 가능한 객체에 대한 내부 작업 할당입니다. 예를 들면 다음과 같습니다.
mylist = mylist.sort()
sort()
리스트 의 메소드는리스트를 제자리에 정렬합니다 mylist
. 즉, 수정됩니다. 그러나 메소드의 실제 리턴 값은 None
정렬 된 목록이 아닙니다. 에 방금 배정 None
되었습니다 mylist
. 다음에 시도하면 mylist.append(1)
파이썬 이이 오류를 줄 것입니다.
아래 코드를 고려하십시오.
def return_something(someint):
if someint > 5:
return someint
y = return_something(2)
y.real()
이것은 당신에게 오류를 줄 것입니다
AttributeError : 'NoneType'개체에 'real'특성이 없습니다.
따라서 포인트는 다음과 같습니다.
액세스하려는 개체를 의미합니다 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
.
if foo is not None:
추정기 (sklearn)를 만들 때 fit 함수에서 자기 자신을 반환하는 것을 잊어 버린 경우에도 같은 오류가 발생합니다.
class ImputeLags(BaseEstimator, TransformerMixin):
def __init__(self, columns):
self.columns = columns
def fit(self, x, y=None):
""" do something """
def transfrom(self, x):
return x
AttributeError : 'NoneType'개체에 'transform'특성이 없습니까?
추가 return self
맞춤 기능은 오류를 해결합니다.
print
함수 (또는 버전에 따른 문장)를 추가 하여이 문제가있는 코드에서 변수가 실제로 갖는 실제 값을 표시하십시오.