zoukankan      html  css  js  c++  java
  • 双下划线开头的attr方法

     1 class Job:
     2     def __init__(self, name):
     3         self.name = name
     4 
     5     def __getattr__(self, item):  # 当调用的属性不存在的时候,就会触发此方法
     6         print('没有此属性')
     7 
     8     def __delattr__(self, item):  # 当删除属性时,会触发此方法
     9         print('删除方法__delattr__')
    10 
    11     def __setattr__(self, key, value):  # 只要有属性创建的时候就会触发此函数
    12         print('__setattr__执行')
    13         # self.key = value  # 出现递归
    14         self.__dict__[key] = value
    15 
    16 
    17 j1 = Job('小白')
    18 print(j1.__dict__)
    19 print(j1.name)
    20 print(j1.sd)
    21 j1.z = 2
    22 print(j1.__dict__)
    23 print(j1.name)
    24 输出:
    25 __setattr__执行
    26 {'name': '小白'}
    27 小白
    28 没有此属性
    29 None
    30 __setattr__执行
    31 {'name': '小白', 'z': 2}
    32 小白
     1 class Job:
     2     def __init__(self, name):
     3         self.name = name
     4 
     5     def __getattr__(self, item):  # 当调用的属性不存在的时候,就会触发此方法
     6         print('没有此属性')
     7 
     8     def __delattr__(self, item):  # 当删除属性时,会触发此方法
     9         print('删除方法__delattr__')
    10         self.__dict__.pop(item)
    11 
    12     def __setattr__(self, key, value):  # 只要有属性创建的时候就会触发此函数
    13         print('__setattr__执行')
    14         # self.key = value  # 出现递归
    15         self.__dict__[key] = value
    16 
    17 
    18 j1 = Job('小白')
    19 del j1.name
    20 print(j1.__dict__)
    21 print(j1.__dict__)
    22 print(j1.name)
    23 print(j1.sd)
    24 j1.z = 2
    25 print(j1.__dict__)
    26 print(j1.name)
    27 输出:
    28 __setattr__执行
    29 删除方法__delattr__
    30 {}
    31 {}
    32 没有此属性
    33 None
    34 没有此属性
    35 None
    36 __setattr__执行
    37 {'z': 2}
    38 没有此属性
    39 None
  • 相关阅读:
    Maven 集成Tomcat插件
    dubbo 序列化 问题 属性值 丢失 ArrayList 解决
    docker 中安装 FastDFS 总结
    docker 从容器中拷文件到宿主机器中
    db2 相关命令
    Webphere WAS 启动
    CKEDITOR 4.6.X 版本 插件 弹出对话框 Dialog中 表格 Table 自定义样式Style 问题
    SpringMVC JSONP JSON支持
    CKEDITOR 3.4.2中 按钮事件中 动态改变图标和title 获取按钮
    git回退到远程某个版本
  • 原文地址:https://www.cnblogs.com/ch2020/p/12435941.html
Copyright © 2011-2022 走看看