python:小心类实例的属性动态绑定机制
class Test: def __init__(self): self.__key='init' def get_key(self): return self.__key def set_key(self,key): self.__key=key if __name__ == '__main__': obj = Test() print(obj.get_key())#输出初始值init obj.set_key('通过set方法设置的值') print(obj.get_key())#输出set方法修改之后的值 obj.__key = 'Should not use in this way'#动态绑定上去的属性 print(obj.get_key())#类的实例私有属性的值 print(obj.__key) #注意这个地方↑其实输出的是动态绑定到实例obj上面的属性,不是类里面的私有属性!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
mac:python:pycharm:osx:可怕的case-sensitive硬盘格式
安装osx的时候选择了case-sensitive的硬盘格式.装好以后安装pycharm,变成这个样子了: 点击更多细节,导航到: https://confluence.jetbrains.com/display/IDEADEV/Filesystem+Case-Sensitivity+Mismatch 注意这里: 临时解决方案说了一大堆,总之,不要把硬盘格式化成大小写敏感的形式.顺便说一句,格错了的用time machine恢复景象还是会变回成大小写敏感的格式,不要问我是怎么知道的
- 下一篇
python:LEGB标识符解析顺序
""" LEGB查询规则: L locals 局部变量,当前所在命名空间(如函数,模块等) 注意,包括函数的参数(形参) E Enclosing Function 闭包空间(外部嵌套函数的命名空间) G Globals 全局变量,某个python模块的命名空间 B Builtins python内建模块的命名空间 """ key='Hello'#模块全局 def test(): print(key)#全局,输出:Hello def test2(key): print(key,end='***')#局部(形参),输出 key参数传入的值 key=key+str(512) print(key) def test3(): #print(key) """ 这里↑遵循LEGB规则解析标识符key的时候, 在函数locals中发现了key=1024 key不再当作全局变量解析,所以打开注释后这里会报错: local variable 'key' referenced before assignment """ key=1024#注意和前面的test函数比较 print(key) def test4...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,CentOS8安装Elasticsearch6.8.6
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装Nodejs环境