开发者

Why can't I access the instance.__class__ attribute in Python?

开发者 https://www.devze.com 2022-12-30 21:12 出处:网络
I\'m new to Python, and I know I must be missing something pretty simple, but why doesn\'t this very, very simple code work?

I'm new to Python, and I know I must be missing something pretty simple, but why doesn't this very, very simple code work?

class myClass:
   开发者_运维技巧 pass

testObject = myClass
print testObject.__class__

I get the following error:

AttributeError: class myClass has no attribute '__class__'

Doesn't every object in Python have a __class__ attribute?


I think I realized my mistake. I thought that the code testObject = myClass was creating a new instance/object of the class, but it was actually assigning a reference to the class itself. I changed the code to:

class myClass: 
    pass 

testObject = myClass() 
print testObject.__class__ 

and it now works as I was expecting


Most, but not all, objects in Python have a __class__ attribute. You can usually access it to determine an object's class.

You can get the class of any object by calling type on it.

>>> class myClass:
...     pass
... 
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>


Old-style classes don't have a __class__ attribute.

class myClass(object):
    pass
0

精彩评论

暂无评论...
验证码 换一张
取 消