(1)__getattr__(self, item):

在访问对象的item属性的时候,如果对象并没有这个相应的属性,方法,那么将会调用这个方法来处理。。。这里要注意的时,假如一个对象叫fjs,  他有一个属性:fjs.name = "fjs",那么在访问fjs.name的时候因为当前对象有这个属性,那么将不会调用__getattr__()方法,而是直接返回了拥有的name属性了

(2)__setattr__(self, item, value):

当试图对象的item特性赋值的时候将会被调用。

# -*- coding:utf-8 -*-
class Student:def __getattr__(self, item):return item + ' is not exits'def __setattr__(self, key, value):self.__dict__[key] = valuedef __getitem__(self, item):return self.__dict__[item]def __setitem__(self, key, value):self.__dict__[key] = values = Student()
print(s.name)  # 调用__getattr__方法 输出'name is not exits'
s.age = 1  # 调用__setattr__ 方法
print(s.age)  # 输出 1
print(s['age'])  # 调用 __getitem__方法 输出1
s['name'] = 'tom'  # 调用 __setitem__ 方法
print(s['name'])  # 调用 __getitem__ 方法 输出 'tom'

输出结果为:

name is not exits
1
1
tom

python __getattr__,__setattr__方法的理解相关推荐

  1. 关于python numpy.quantile()方法的理解以及分位数的理解

    近期在编写python代码的时候遇到了python的numpy包中的quantitle()方法,产生了困惑,没有明白其得到的是什么,查阅之后发现,其实意思是分为数的意思,里面的参数q如果传入的是一个值 ...

  2. python strip_关于python中strip方法的理解

    1.strip方法并不是去除对称字符串的. 比如 a="123abcd321" a.strip()方法的结果是abcd 有人可能就把strip方法理解成了"可以去除字符串 ...

  3. python 构造函数 __init__()方法的理解

    用到__init__函数(方法), 首先,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问. 而__init__函数(方法)支持带参数类的初始化,也可为声明该类的属性(类中的变量). ...

  4. python中repr方法_理解Python中的repr()函数 - 程序园

    >>> x = 'foo' >>> x 'foo' 因此,名称x附加到'foo'字符串.当你调用例如repr(x)时,iterpreter放置'foo'而不是x,然 ...

  5. python中的__dict__,__getattr__,__setattr__

    python class 通过内置成员__dict__ 存储成员信息(字典) 首先用一个简单的例子看一下__dict__ 的用法 class A():def __init__(self,ax,bx): ...

  6. Python __getattr__和__setattr__方法介绍

    __getattr__是类在调用属性时,如果没有该属性会自动调用的魔法方法 __setattr__是类在设置属性(包含已有属性重新修改属性值)时会自动调用的魔法方法 话不多说,直接上例子,如有问题麻烦 ...

  7. python threading模块的方法_Python THREADING模块中的JOIN()方法深入理解

    看了oschina上的两个代码,受益匪浅.其中对join()方法不理解,看python官网文档的介绍: join([timeout]):等待直到进程结束.这将阻塞正在调用的线程,直到被调用join() ...

  8. Python__getattr__、__setattr__、__delattr__、__getitem__、__setitem__、__getattribute__方法的理解

    1. __getattr__(self, item): 在访问对象的item属性的时候,如果对象并没有这个相应的属性,方法,那么将会调用这个方法来处理...这里要注意的时,假如一个对象叫fjs,  他 ...

  9. 对Python装饰器的个人理解方法

    在自己好好总结并对Python装饰器的执行过程进行分解之前,对于装饰器虽然理解它的基本工作方式,但对于存在复杂参数的装饰器(装饰器和函数本身都有参数),总是会感到很模糊,即使这会弄懂了,下一次也很快忘 ...

最新文章

  1. python100行代码-怎样写贪吃蛇小游戏?用100行python代码轻松解决!
  2. Python defaultdict 模块和 namedtuple 模块 1
  3. swiper怎么在HTML引入JS文件,Swiper.js插件超简单实现轮播图
  4. CodeForces - 1480D2 Painting the Array II(dp)
  5. Service order description modify and save
  6. php安装event扩展的问题
  7. hibernate在分层架构中修改数据(update)时遇到的问题!!
  8. 互联网架构设计漫谈 (1)-概述
  9. 基于webpack工程化的思考
  10. 问题3:filesystem:不是std的成员,filesystem:该名称的命名空间或类不存在
  11. pytorch——MINST数据集
  12. 朋友圈的人脉关系的算法
  13. 关于laydate 日期插件 点击闪退的问题
  14. STREAM内存带宽测试工具介绍及其内部实现
  15. 国培 计算机远程培训心得,国培远程培训感言3篇
  16. python链接sql报错_python3.7连接sqlserver数据库失败报错20002, DB-Lib error message 20002
  17. Rust:Trait 详解
  18. 最新版IDEA设置打开IDEA弹出新窗体
  19. 参考文献中各字母的含义
  20. PNAS | 香港理工李向东等揭示全球空气细菌群落与地球微生物组和人类活动的互作...

热门文章

  1. python 新式类 旧式类_Python新式类与经典类(旧式类)的区别
  2. 前端基础第二天——HTML5基础
  3. 用来显示实时红黄绿小灯的div
  4. 【Servlet】什么是Servlet;常见状态码;Servlet API;Cookie和Session
  5. 《隐私计算法律适用规则报告》:隐私计算如何助力数据合规
  6. 公布Windows版Flutter
  7. CF1452 D. Radio Towers(斐波那契数列+概率)
  8. 上海喔趣科技有限公司面经 Java实习生(记录第一次面试)已oc
  9. flowable申请页面
  10. pythonmysql