发布时间:2018-03-25 14:51:21编辑:admin阅读(4797)
析构函数:
在实例释放、销毁的时候自动执行的,通常用于做一些收尾工作, 如关闭一些数据库连接,关闭打开的临时文件
析构函数,是无法传参的
class Role(object): def __init__(self, name): self.name = name #析构函数 def __del__(self): print('%s 彻底死了...' % self.name) def shot(self): print("shooting...") r1 = Role('jack')
执行输出:
jack 彻底死了...
现在还没有干啥事情,怎么就执行了呢?
再执行一个类里面的函数
class Role(object): def __init__(self, name): self.name = name #析构函数 def __del__(self): print('%s 彻底死了...' % self.name) def shot(self): print("shooting...") r1 = Role('jack') r1.shot()
执行输出:
shooting...
jack 彻底死了...
当程序退出的时候,实例就销毁了,所以最后执行了析构函数。
私有属性
外部不允许直接访问和修改
比如将name变成私有属性,外部测试访问
class Role(object): def __init__(self, name): #私有属性 self.__name = name def shot(self): print("shooting...") r1 = Role('jack') print(r1.__name)
执行报错
AttributeError: 'Role' object has no attribute '__name'
变成私有属性,在变量名前面加双下划线就可以了。
那么想在外部获取这个值,怎么办呢?
虽然外部无法直接访问,但是在类里面,是可以访问的,定义一个方法,用来获取私有属性
class Role(object): def __init__(self, name): self.__name = name def shot(self): print("shooting...") def show_name(self): print('name: %s' % self.__name) r1 = Role('jack') print(r1.show_name())
执行输出:
name: jack
None
在类里面,也可以更改私有属性的值
class Role(object): def __init__(self, name): self.__name = name def shot(self): print("shooting...") def show_name(self): self.__name = "Tom" print('name: %s' % self.__name) r1 = Role('jack') print(r1.show_name())
执行输出:
name: Tom
None
定义私有方法,和私有属性是一样的,前面加双下划线即可。
class Role(object): def __init__(self, name): self.__name = name #私有方法 def __shot(self): print("shooting...") def show_name(self): self.__name = "Tom" print('name: %s' % self.__name) r1 = Role('jack') print(r1.__shot())
执行报错:
AttributeError: 'Role' object has no attribute '__shot'
上一篇: python 面向对象之变量
下一篇: python 面向对象之类的继承
47744
46234
37109
34626
29228
25885
24744
19862
19415
17907
5715°
6314°
5834°
5887°
6983°
5829°
5845°
6360°
6315°
7672°