python面向对象

 1 class Dog(object):
 2     n=123              
 3     name='类变量name'
 4     n_list=[]
 5     
 6     def __init__(self,name,life_value=100):  #传参数
 7         self.name=name      
 8         self.__life_value=life_value   
 9     
10     def __del__(self):
11         print("%s dead"% self.name)
12 
13     def show_status(self):
14         print("test 私有变量调用 name:%s,life_value:%s" %(self.name,self.__life_value))
15 
16     def bulk(self):
17         print("%s is wang wang wang" % self.name)
18 
19 d1=Dog("huanhuan")    
20 d1.bulk()
21 print("d1:",d1.name,d1.n)
22 d1.n_list.append('d1,') 
23 d1.wierd=True            #
24 print("d1:",d1.name,d1.n,d1.n_list,d1.wierd)
25 d1.show_status()
26 del d1.n                 #
27 
28 del d1            
29 
30 d2=Dog('lele')
31 d2.n_list.append('d2,')
32 print("d2:",d2.name,d2.n,d2.n_list)
33 
34 print("Dog:",Dog.name,Dog.n,Dog.n_list)

面向对象三特性:封装,继承,多态。

封装:将类的功能的实现细节对外部来说是透明的。

继承:代码的重用。

多态:一种接口,多种实现。

构造函数:实例化过程中做一些初始化的工作,传参。

def __init__(self,name,life_value=100):  #传参数
 7         self.name=name      
 8         self.__life_value=life_value   

 调用:d1=Dog('huanhuan')   

展开来看:

d1.name='huanhuan'

d1.__life_value=100

析构函数:在实例释放、撤销时,做收尾工作,如断开数据库连接,关闭已打开的临时文件

def __del__(self):
11         print("%s dead"% self.name)

28 del d1  #删除d1实例,(门派号没了,房子可以拆了),销毁对象,执行析构函数
而程序中没有写del d2,所以d2对象析构函数的调用是在整个程序结束时。

私有属性、私有方法:外部不能直接调用,必须通过类的其他方法才能调用。
8         self.__life_value=life_value  (前面有__)
调用:
13     def show_status(self):
14         print("test 私有变量调用 name:%s,life_value:%s" %(self.name,)
不能直接在外部print(self.__life_value)会报错
#私有方法   
def __sleep(self): print('私有方法:%s is sleeping' %self.name) #调用私有方法 def show_status(self): self.__sleep()
 


原文地址:https://www.cnblogs.com/ceceliahappycoding/p/8410531.html