__getattr__是类在调用属性时,如果没有该属性会自动调用的魔法方法

__setattr__是类在设置属性(包含已有属性重新修改属性值)时会自动调用的魔法方法

话不多说,直接上例子,如有问题麻烦留言给小编。小编用的是python3.6.9

class Person(object):def __init__(self, name):# 调用__setattr__方法self.name = name# 没有对应的属性时,会调用__getattr__def __getattr__(self, item):print(item,"-"*10)# 设置属性时会调用__setattr__方法,包括__init__设置属性时# 设置好后就不会再调用了def __setattr__(self, key, value):print(key,value,"*"*10)# 这一行意义重大,不能用self.key = value# 因为这样的话还是会调用__setattr__,形成死循环self.__dict__[key] = valuea = Person("大锤")  # 输出:name 大锤  ********** (初始化调用了__init__)
print(a.name)  # 输出:大锤    (不调用__setattr__,因不是设置属性)
a.name = 666  # 输出:name 666 **********    (调用了__setattr__)
a.age  # 输出:age ----------      (调用了__getattr__)
a.zsd = 100  # 输出:zsd 100 **********    (调用了__setattr__)

Python __getattr__和__setattr__方法介绍相关推荐

  1. python加号换行,Python字符串拼接六种方法介绍

    Python字符串拼接的6种方法: 1.加号 第一种,有编程经验的人,估计都知道很多语言里面是用加号连接两个字符串,Python里面也是如此直接用"+"来连接两个字符串: prin ...

  2. python 定义函数方法,python中函数如何定义?python函数的调用方法介绍

    本篇文章给大家带来的内容是关于python中函数如何定义?python函数的调用方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 函数的概念,函数是将具有独立功能的代码块 ...

  3. python __getattr__和__setattr__

    __getattr__:当使用点号获取实例属性时,如果属性不存在就自动调用__getattr__方法. __setattr__:当设置类实例属性时自动调用,如j.name=5 就会调用__setatt ...

  4. Python里面数组拼接方法介绍

    numpy数组拼接方法介绍 转载来源:https://blog.csdn.net/zyl1042635242/article/details/43162031 数组拼接方法一 思路:首先将数组转成列表 ...

  5. python怎么读excel文件-Python读写Excel文件方法介绍

    一.读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台.这也就意味着你可以在Linux下读取Excel文件. 首先,打开workbook: 复制代码 代码如下: import xlrd ...

  6. python怎么读取excel文件-Python读写Excel文件方法介绍

    一.读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台.这也就意味着你可以在Linux下读取Excel文件. 首先,打开workbook: 复制代码 代码如下: import xlrd ...

  7. python join_python中join()方法介绍

    描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法:str.join(sequence) 参数 sequence -- 要连接的元 ...

  8. Python—reverse()和reversed()方法介绍

    reverse()方法 属于列表的内置方法(即在字典.元组.字符串中没有这个内置方法),可用于列表中数据的翻转. 需要注意的是reverse()方法是直接对原列表进行翻转,没有返回值. list = ...

  9. python中,__del__方法介绍

    Y28 简单例: # 定义一个类 class Person:def __del__(self):print('这个是del方法')# 创建对象(将对象Person赋予变量p1,对象和变量区分开) p1 ...

最新文章

  1. java第5天_java第5天的代码
  2. ICML 2019全纪录:论文解读、workshop讨论、核心知识都在这里了
  3. HRFormer 多分辨率Transformer 参数骤降,性能更强
  4. Thrust快速入门教程(二)——Vector的使用
  5. Winform开发几个常用的开发经验及知识积累(一)
  6. python图形编程基础-Python从基础到入门系列教程
  7. java序列化如何实现_Java实现序列化与反序列化的简单示例
  8. [Leetcode]-containsNearbyDuplicate
  9. LeetCode篇之链表:83(去重问题)
  10. 【小项目】Vue 整合 Axios
  11. Windows xp 定时关机命令
  12. 获取当前程序的相当路径
  13. java tcp通信需要学吗_从c#通过tcp与java服务器通信
  14. golang 生成定单号
  15. 3、tiny yolov2 训练
  16. sketch-矢量绘图应用软件
  17. Codeforces Round #521 (Div. 3) E - Thematic Contests (二分 + STL)
  18. 华为p4不是鸿蒙吗怎么又改为安卓_鸿蒙系统是不是就是改版的安卓系统?
  19. 【cocos creater】5.仿《弓箭传说》- 创建虚拟遥感
  20. 安装算量软件快速计算管道管件功能

热门文章

  1. 未能连接到许可证服务器 发生错误 -96,ug启动许可证错误怎么办 UG软件启动许可证错误96解决方法...
  2. python设置堆大小_Python中的堆问题
  3. OpenGL:绘制太阳地球例子
  4. transform再次理解
  5. [工程测量]工程测量个人期中复习笔记
  6. 华为服务器存储系列,华为 服务器 存储相关资料(示例代码)
  7. 搭建小程序表情包教程
  8. python生成的词云没有图案_Python如何生成词云的方法
  9. 计算机中丢失xapofx1 5.dll,xapofx1 5 dll丢失怎么办_系统提示xapofx1 5 dll丢失的解决方法...
  10. unity 引用prefab_十九:Unity 配置数据(序列化)的重构