视频地址:http://v.youku.com/v_show/id_XNDg3NjU1MjE2.html
1 #!/usr/bin/python 2 #coding:utf8 3 var4 = "全局变量" 4 class Milo(): 5 var1 = "类属性,公有属性var1" 6 __var2 = "类的私有属性 __var2" 7 8 def fun(self): 9 self.var2 = "对象的公有属性var2" 10 self.__var3 = "对象的私有属性__var3" 11 var4 = "函数 fun 的局部变量var4" 12 print var4 13 print self.__var3 14 15 def other(self): 16 print var4 17 print self.__var3 # 这表示在运行类方法fun()之后,实例有了个 18 # self.__var3的变量。所以比较好 19 20 zou = Milo() 21 zou.fun() 22 # print zou.var4 # 如果不执行类方法fun()的话,那么将没有zou.var4 这一行都是没有用的,局部变量无法在对象中引用!! 23 24 zou.other() # 单独运行输出self.__var3也不行,应该先运行类方法fun()之后
显示结果:
alex@universe ~/python/OOP $ python cls_LeiShuXing.py
函数 fun 的局部变量var4
对象的私有属性__var3
全局变量
对象的私有属性__var3
上面注释写的就很好,可以会议一下。
就是运行函数的时候,可以自己加载一些属性。上面的函数,是在运行对象zou的zou.fun()之后,才有了zou.var4
如果,我们把上面类的方法fun(),变成方法def __init__(self): 的话,那么所有对象在创建的时候,都要自动去创建方法要求里面的内容,针对这个代码来说,将会创建 类 的
私有属性 self.__var3,
类的共有属性 self.var2 ,
函数的局部变量var4 (var4 只有当 fun()运行后才有效果)
(这些私有属性,公有属性,函数的局部变量 都 只归 所创建的这个对象所有 )
整体说一句总结:
类的属性就是说,在类中,会有各种方法,当创建对象的时候,如果对象启动了类中的某一个方法,那么这个对象就可能会产生类的属性。
不同对象触及不同方法,会导致不同对象的类的属性不同(或者处理结果方式不同,内部可能有函数)。
这就保证了一个类可以创建差异性比较大的各种 对象了。 保证了对象的多样性!!!
1 class Trouble(): 2 3 var1 = "peace" 4 5 def fun(self): 6 7 self.var2 = "Bill Gates" 8 9 def kick(self): 10 11 self.__var3 = "Steve Jobs" 12 13 obj1 = Trouble() 14 15 obj2 = Trouble() 16 17 obj1.fun() 18 19 obj2.kick()
这样,对象obj1 就有了公有属性 var1 , var2
obj2 有公有属性 var1, 私有属性__var3
执行了类中的方法,让他们有了属性