1. class Mine:
2. def fun1(self,x):
3. self.x=x
4. print "Inside fun1",self.x
5. def fun2(self):
6. print "Inside fun2 :",self.x
7.
8. obj1 = Mine()
9. obj1.fun1(1)
10. obj1.fun2()
11. obj2 = Mine()
12. obj2.fun1(10000)
13. obj2.fun2()
14. del obj1.x
15. #obj1.fun2()
16. obj2.fun2()
17. Mine.a=111
18. obj3=Mine()
19. print "Mine.a: ",Mine.a
20. print "obj1.a: ",obj1.a
21. print "obj2.a: ",obj2.a
22. print "obj2.a: ",obj3.a
23. obj2.c=222
24. #print "\nMine.c: ",Mine.c
25. #print "obj1.c: ",obj1.c
26. print "obj2.c: ",obj2.c
27. #print "obj2.c: ",obj3.c
有人可以帮我理解第17和23号线的情况,以及为什么第19,20,21,22行的代码工作正常,第24,25,27行的代码出错?
先谢谢。
答案 0 :(得分:1)
17. Mine.a=111
您要向班级a
添加新的静态成员Mine
。 python的工作方式(其他面向对象的语言不这样做)你可以访问a
,就像它是一个普通的实例属性;即m = Mine(); print m.a
现在将与print Mine.a
一样工作。
静态成员通常添加在类定义的主体中:
class Mine:
a = 111
你的第二个问题:
23. obj2.c=222
这只会向当前实例obj2
添加一个新成员。 Mine
或其他Mine
本身的其他内容都不了解c
。