_生成对象时,不会自动调用init()。

请参考下面给出的方案:

选择 | 换行 | 行号
  1. class t2:
  2.     a=0
  3.     def _init_(self):
  4.         t2.a=10
  5.     def f1(self,temp):
  6.         self.a=temp
  7.     def f2(self):
  8.         print self.a
  9. O1=t2()
  10. O1.f2()
  11. O1.f1(1000)
  12. O1.f2()
  13. O1.a=2000
  14. O1.f2()

结果是:
0
1000
2000年
并且在显式调用时:

选择 | 换行 | 行号
  1. class t2:
  2.     a=0
  3.     def _init_(self):
  4.         t2.a=10
  5.     def f1(self,temp):
  6.         self.a=temp
  7.     def f2(self):
  8.         print self.a
  9. O1=t2()
  10. O1._init_()
  11. O1.f2()
  12. O1.f1(1000)
  13. O1.f2()
  14. O1.a=2000
  15. O1.f2()

给了我们
10
1000
2000年

# 回答1


您已将方法"__init__"定义为"_init_"。创建实例时会调用"__init__"(前后两个下划线),但不调用"_init_"。
# 回答2


另外,您同时使用了这两种方法
类和实例属性
命名为"a",这是不一样的。

选择 | 换行 | 行号
  1. class T2:
  2.      a=0
  3.      def __init__(self):
  4.          T2.a=10
  5.      def f1(self,temp):
  6.          self.a=temp
  7.      def f2(self):
  8.          print self.a
  9.  
  10. class T3:
  11.     def __init__(self):
  12.         T2.a=20
  13.  
  14. O1=T2()
  15. O1.f2()
  16. O1.f1(1000)
  17. O1.f2()
  18. O1.a=2000
  19. O1.f2()
  20.  
  21. print T2.a
  22. third = T3()
  23. print T2.a 
# 回答3


已验证。
谢谢你的指导。

标签: python

添加新评论