getattr

在访问对象的属性不存在时,调用__getattr__,如果没有定义该魔法函数会报错

class Test:
def __init__(self, name, age):
self.name = name
self.age = age def __getattr__(self, item):
print(item) // noattr
return 'aa' test = Test('rain', 25)
print(test.age) // 25
print(test.noattr) //aa
getattribute

访问对象任何属性(即使属性不存在)都会调用__getattribute__

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File : 04__getattr__与__getattribute__.py
@Time : 2018/12/18 21:06:50
@Author : Rain
@License : (C)Copyright 2017-2018, Liugroup-NLPR-CASIA
@Desc : None
''' # here put code class Test:
def __init__(self, name, age):
self.name = name
self.age = age def __getattr__(self, item):
print(item)
return 'aa' def __getattribute__(self, item): # 尽量不要使用它
print('访问属性了')
return 'bbb' test = Test('rain', 25)
print(test.age)
print(test.noattr)

结果:

python魔法函数之__getattr__与__getattribute__的更多相关文章

  1. python魔法方法:__getattr__,__setattr__,__getattribute__

    python魔法方法:__getattr__,__setattr__,__getattribute__ 难得有时间看看书....静下心来好好的看了看Python..其实他真的没有自己最开始想的那么简单 ...

  2. python魔法函数__dict__和__getattr__的妙用

    python魔法函数__dict__和__getattr__的妙用 __dict__ __dict__是用来存储对象属性的一个字典,其键为属性名,值为属性的值. 既然__dict__是个字典那么我们就 ...

  3. Python魔法函数

    python中定义的以__开头和结尾的的函数.可以随意定制类的特性.魔法函数定义好之后一般不需要我们自己去调用,而是解释器会自动帮我们调用. __getitem__(self, item) 将类编程一 ...

  4. python魔法函数(二)之__getitem__、__len__、__iter__

    魔法函数会增强python类的类型,独立存在 __getitem class Company: def __init__(self, employees): self.employees = empl ...

  5. Python魔法函数与两比特量子系统模拟

    技术背景 本文主要涵盖两个领域的知识点:python的魔法函数和量子计算模拟,我们可以通过一个实际的案例来先审视一下这两个需求是如何被结合起来的. 量子计算模拟背景 ProjectQ是一个非常优雅的开 ...

  6. python魔法函数的一些疑问

    看了魔法函数,有一点疑问.1中需要用self.word才能执行,而2直接用self就可以执行.而1中Word继承了int基本类型,但在__new__时并没有什么卵用.当用 Word(“123”)来实例 ...

  7. python 进阶读书笔记2 -- python魔法函数

    #!/usr/bin/env python# -*- coding: utf-8 -*- class student: def __init__(self, name_list): self.stud ...

  8. raindi python魔法函数(一)之__repr__与__str__

    __repr__和__str__都是python中的特殊方法,都是用来输出实例对象的,如果没有定义这两个方法在打印的时候只会输出实例所在的内存地址 这种方式的输出没有可读性,并不能直观的体现实例.py ...

  9. Python的魔法函数系列 __getattrbute__和__getattr__

      #!/usr/bin/env python # -*- coding: utf-8 -*- import sys __metaclass__ = type """ _ ...

随机推荐

  1. 第26月第22天 iOS瘦身之armv7 armv7s arm64选用 iOS crash

    1.iOS瘦身之armv7 armv7s arm64选用 机器对指令集的支持是向下兼容的,因此armv7的指令集是可以运行在iphone5S以上的,只是效率没那么高而已~ 但是由于苹果要求必须支持ar ...

  2. 解决shell脚本中 telnet ap自动输入用户名和密码以及回车符

    #!/bin/bash function change_ap { ( s=`stty -g`; str=$"\n" sstr=$(echo -e $str) stty raw -e ...

  3. excel数据有隐藏字符导致正则校验不通过

    问题现象: 原因: 肉眼看不出任何问题,实际原因“有问题的”待校验字符串第一个单引号和第一个数字之间有个不可见字符 (注:Chrome控制台.常见编辑器定位光标 “Backspace退格删除”时,第一 ...

  4. linux atoi

    atoi 只能针对字符串为数字, 对字符串为十六进制.八进制的不能进行转化

  5. AndroidStudio Terminal的使用

    gradlew  assembleDebug  --stacktrace 查看使用的依赖的 Execution failed for task ':app:transformClassesWithMu ...

  6. Spring Boot:如何配置静态资源的地址与访问路径

    spring.resources.static-locations=classpath:/static,classpath:/public,classpath:/resources,classpath ...

  7. 异常:已引发: "设置 connectionId 时引发了异常。" (System.Xaml.XamlObjectWriterException) 引发了一个 System.Xaml.XamlObjectWriterException: "

    项目中,引用一个富文本编辑器,SmithHtmlEditor,进入页面的时候异常. 在View和ViewModel所在的类库引用. 还需要在Main中引用.

  8. linux 工具学习网站

    推荐一个很不错的linux工具学习网站; 对于一个开发人员来说,我觉得掌握这些工具对于基于linux的应用开发来说事半功倍. http://linuxtools-rst.readthedocs.io/ ...

  9. [转] 如何轻松愉快地理解条件随机场(CRF)?

    原文链接:https://www.jianshu.com/p/55755fc649b1 如何轻松愉快地理解条件随机场(CRF)?   理解条件随机场最好的办法就是用一个现实的例子来说明它.但是目前中文 ...

  10. 【运维】浪潮服务器一块硬盘显示红色Offline(或者Failed)解决办法

    [写在前面]           最近服务器不知道为什么总是出现故障,以前戴尔服务器硬盘出现故障,也就是说硬盘旁边的灯显示为红色的时候,一般情况下都是表示硬盘坏掉了,直接买一块新的硬盘,将坏掉的硬盘拿 ...