2010-05-14 3 views
0

저는 파이썬을 처음 접했고 아주 간단한 것을 놓치고 있어야한다는 것을 알고 있습니다 만, 왜 이렇게 간단하지 않은 코드가 작동합니까? 파이썬에서 인스턴스 .__ class__ 속성에 액세스 할 수없는 이유는 무엇입니까?

AttributeError: class myClass has no attribute '__class__' 

파이썬의 모든 개체가 __class__ 속성을 없음 :

class myClass: 
    pass 

testObject = myClass 
print testObject.__class__ 

나는 다음과 같은 오류가?

+0

오류는 파이썬 2.x 또는 3.0에 존재 기다리고 있었다으로 지금 작동 파이썬 3.1에서'__class__'는 에러를 생성하지 않습니다. 그리고 왜 아직도 구식 수업을 사용하고 있습니까? – kennytm

+0

@KennyTM - 밀도가 높지만 오래된 스타일 수업은 무엇입니까? – froadie

+0

'object'에서 파생되지 않는 클래스입니다. – kennytm

답변

3

나는 내 실수를 깨달았다 고 생각합니다. 나는 코드 testObject = myClass이 클래스의 새로운 인스턴스/객체를 만들고 있다고 생각했지만 실제로 클래스 자체에 대한 참조를 할당하고있었습니다. 나는에 코드를 변경 :

class myClass: 
    pass 

testObject = myClass() 
print testObject.__class__ 

내가

1

구식 클래스에는 __class__ 특성이 없습니다.

class myClass(object): 
    pass 
2

대부분의 파이썬 객체에는 __class__ 속성이 있습니다. 일반적으로이 클래스에 액세스하여 객체의 클래스를 결정할 수 있습니다.

클래스는 type을 호출하여 개체를 얻을 수 있습니다.

>>> class myClass: 
...  pass 
... 
>>> testObject = myClass 
>>> type(testObject) 
<type 'classobj'> 
관련 문제