KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a question about __class__ in python. The documentation says that __class__ is the class to which a class instance belongs. So I conducted a series of experiments: class counter: count = 0 def __init__(self): self.__class__.count += 1 NewCounter1 = counter() print NewCounter1.count #The result is 1 NewCounter2 = counter() print NewCounter2.count #The result is 2 print NewCounter2.__class__.count is NewCounter2.count #result: True Everything goes well. Then I enter code as follows: NewCounter2.__class__.count = 3 print NewCounter1.count #result:3 print NewCounter1.__class__.count #result:3 print NewCounter2.count #result:3 print NewCounter2.__class__.count #result:3 print NewCounter2.__class__.count is NewCounter2.count #result: True From the code above, I thought that maybe NewCounter1.count equals NewCounter1 , or __class__.count , but the following code surprised me: NewCounter2.count = 5 print NewCounter1.count #result:3 print NewCounter1.__class__.count #result:3 print NewCounter2.count #result:5 print NewCounter2.__class__.count #result:3 print NewCounter2.__class__.count is NewCounter2.count #result: False Why has NewCounter2.count changed but NewCounter2.__class__.count remained at 3? What's more, when I changed NewCounter2.count , NewCounter2.__class__.count is NewCounter2.count became False . What in the world is the attribute __class__ ?
Tags (comma-separated)
Save Edits
Cancel