[PYTHON] Python AttributeError : 객체에 속성이 없습니다.
PYTHONPython AttributeError : 객체에 속성이 없습니다.
MyThread 클래스가 있습니다. 그 안에는 방법 샘플이 있습니다. 동일한 객체 컨텍스트를 사용하여 실행하려고합니다. 코드를 살펴보십시오.
class myThread (threading.Thread):
def __init__(self, threadID, name, counter, redisOpsObj):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
self.redisOpsObj = redisOpsObj
def stop(self):
self.kill_received = True
def sample(self):
print "Hello"
def run(self):
time.sleep(0.1)
print "\n Starting " + self.name
self.sample()
매우 단순한 것 같습니다. 하지만 그것을 실행할 때이 오류가 발생합니다.
AttributeError : 'myThread'객체에 'sample'속성이 없습니다. 이제 그 메소드가 있습니다. 무슨 일 이니? 도와주세요
편집 : 이것은 스택 트레이스입니다.
Starting Thread-0
Starting Thread-1
Exception in thread Thread-0:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 525, in __bootstrap_inner
self.run()
File "./redisQueueProcessor.py", line 51, in run
self.sample()
AttributeError: 'myThread' object has no attribute 'sample'
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 525, in __bootstrap_inner
self.run()
File "./redisQueueProcessor.py", line 51, in run
self.sample()
AttributeError: 'myThread' object has no attribute 'sample'
나는 이것을 이렇게 부르고있다.
arThreads = []
maxThreads = 2;
for i in range( maxThreads ):
redisOpsObj = redisOps()
arThreads.append( myThread(i, "Thread-"+str(i), 10, redisOpsObj) )
죄송합니다 redisOps 클래스 코드를 게시 할 수 없습니다. 그러나 나는 그것이 잘 작동한다는 것을 확신 할 수있다.
해결법
-
==============================
1.들여 쓰기가 잘못되어 탭과 공백이 섞여 있습니다. python -tt를 사용하여 스크립트를 실행하여 확인하십시오.
들여 쓰기가 잘못되어 탭과 공백이 섞여 있습니다. python -tt를 사용하여 스크립트를 실행하여 확인하십시오.
-
==============================
2.이러한 종류의 버그는 파이썬 멀티 스레딩에서 흔히 발생합니다. 인터프리터를 해체 할 때 관련 모듈 (이 경우 myThread)이 일종의 del myThread를 통과한다는 것입니다.
이러한 종류의 버그는 파이썬 멀티 스레딩에서 흔히 발생합니다. 인터프리터를 해체 할 때 관련 모듈 (이 경우 myThread)이 일종의 del myThread를 통과한다는 것입니다.
self.sample () 호출은 myThread .__ dict __ [ "sample"] (self)와 대략 동일합니다. 그러나 인터프리터의 분석 순서가 진행되는 중에 알려진 유형의 자체 사전에 이미 myThread가 삭제되었을 수 있으며 이제는 기본적으로 NoneType이며 '샘플'속성이 없습니다.
-
==============================
3.파이썬 3>을 사용하는 경우이 문제는 이중 변수 밑줄로 시작하는 개인 변수를 사용하는 경우 발생할 수 있습니다. 예를 들어 self .__ yourvariable은이 문제와 관련하여
파이썬 3>을 사용하는 경우이 문제는 이중 변수 밑줄로 시작하는 개인 변수를 사용하는 경우 발생할 수 있습니다. 예를 들어 self .__ yourvariable은이 문제와 관련하여
-
==============================
4.파이썬은 클래스 이름을 포함하도록 내부적으로 이름을 변경하여 해당 멤버를 보호합니다. object._className__attrName과 같은 속성에 액세스 할 수 있습니다.
파이썬은 클래스 이름을 포함하도록 내부적으로 이름을 변경하여 해당 멤버를 보호합니다. object._className__attrName과 같은 속성에 액세스 할 수 있습니다.
-
==============================
5.클래스의 비공개 필드에는 액세스 할 수 없습니다. 비공개 필드는 __로 시작합니다. 예를 들면 - 클래스 자동차 : def init (self) : self .__ updatesoftware ()
클래스의 비공개 필드에는 액세스 할 수 없습니다. 비공개 필드는 __로 시작합니다. 예를 들면 - 클래스 자동차 : def init (self) : self .__ updatesoftware ()
def drive(self): print("driving") def __updatesoftware(self): print("updating software:")
obj = car () obj.drive () obj .__ updatesoftware () ## 여기서는 ____updatesoftware가 개인 메소드이기 때문에 오류가 발생합니다.
from https://stackoverflow.com/questions/11685936/python-attributeerror-object-has-no-attribute by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 클래스의 전달 선언? (0) | 2018.11.11 |
---|---|
[PYTHON] 중괄호의 의미는 무엇입니까? [닫은] (0) | 2018.11.11 |
[PYTHON] 장고 테스트를 실행할 때 stdout을 어떻게 볼 수 있습니까? (0) | 2018.11.11 |
[PYTHON] virtualenv에 PyGtk 설치하기 (0) | 2018.11.11 |
[PYTHON] 튜플을 사용할 때 ChoiceField에 빈 레이블이 표시되지 않습니다. (0) | 2018.11.11 |