【7.2】__getattr__、__getattribute__魔法函数

 1 #!/user/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # __getattr__、__getattribute__
 4 # __getattr__ 就是在查找不到属性的时候调用
 5 # __getattribute__ 无条件进入__getattribute__
 6 from datetime import date
 7
 8
 9 class User:
10     def __init__(self, name, birthday, info={}):
11         self.name = name
12         self.birthday = birthday
13         self.info = info
14
15     def __getattr__(self, item):
16         return self.info[item]
17
18     # def __getattribute__(self, item):
19     #     return ‘__getattribute__‘
20
21
22 if __name__ == ‘__main__‘:
23     user = User(‘zy‘, date(year=1998, month=6, day=8), {‘company‘: ‘imooc‘})
24     print(user.company)
25     print(user.name)
imooc
zy

  

#!/user/bin/env python
# -*- coding:utf-8 -*-
# __getattr__、__getattribute__
# __getattr__ 就是在查找不到属性的时候调用
# __getattribute__ 无条件进入__getattribute__
from datetime import date

class User:
    def __init__(self, name, birthday, info={}):
        self.name = name
        self.birthday = birthday
        self.info = info

    def __getattr__(self, item):
        return self.info[item]

    def __getattribute__(self, item):
        return ‘__getattribute__‘

if __name__ == ‘__main__‘:
    user = User(‘zy‘, date(year=1998, month=6, day=8), {‘company‘: ‘imooc‘})
    print(user.company)
    print(user.name)
__getattribute__
__getattribute__

  

原文地址:https://www.cnblogs.com/zydeboke/p/11259059.html

时间: 2024-10-13 08:07:51

【7.2】__getattr__、__getattribute__魔法函数的相关文章

Python的魔法函数系列 __getattrbute__和__getattr__

  #!/usr/bin/env python # -*- coding: utf-8 -*- import sys __metaclass__ = type """ __getattr__ 和 __getattribute__ 的区别 """ class ClassName: def __init__(self, name, info={}): self.name = name self.info = info # def __getattri

gj3 Python数据模型(魔法函数)

3.1 什么是魔法函数 类里面,实现某些特性的内置函数,类似 def __xx__(): 的形式. 不要自己定义XX,并不是和某个类挂钩的 class Company(object): def __init__(self, employee_list): self.employee = employee_list # 可迭代 def __getitem__(self, item): return self.employee[item] # 长度,实现了len函数 def __len__(self

魔法函数

1.什么是魔法函数 在python中,有的名称以双下划线开头同时以双下划线结尾这种形式,我们只知道它是python自己定义的,同时我们也不应该去定义类似的函数. 我们将“__init__”这种形式的函数成为魔法函数."__init__"是构造器,用来初始化对象.魔法函数不需要去显式的调用,同时魔法函数不能自定义.魔法函数会被python隐式的去被调用. 举个简单的例子:现在我们需要遍历对象中的属性,传统做法是取属性然后去遍历. class Person(object): def __i

转载Python中__getattr__ __getattribute__ __get__解释

来源:http://www.myexception.cn/perl-python/620096.html python中__get__,__getattr__,__getattribute__的区别 __get__,__getattr__和__getattribute都是访问属性的方法,但不太相同. object.__getattr__(self, name) 当一般位置找不到attribute的时候,会调用getattr,返回一个值或AttributeError异常. object.__get

python中getattr(),__getattr__(),__getattribute__()探究

getattr() 为 函数,而__getattr__(), __getattribute__()为类的方法 1. getattr() 参数为 (object,attr_name,default value) 会调用该object的__getattribute__()方法,如果没有返回值,继续调用__getattr__()方法 2. 任何调用实例的属性值,都会调用到__getattribute__方法,如果没有返回值会继续调用__getattr__(),也就是__getattr__() 相当于e

python的魔法函数

hello, 大家好, 今天给大家分享一点python的魔法函数,即Python中自带双下划线的函数,虽然在大规模的软件开发中大家用的不多,当然除非你想被打(可以秀(装逼)一下), 虽然使用的不多, 但是要是能数量的运用它们的话, 没有点功力基础也是相当困难的, 正所谓没有扎实的基本功,即便南拳北腿,降龙十八掌,九阴白骨爪,乾坤大挪移全部了然于心,照样是花拳绣腿,百无一用 所以还是老老实实的把自己的基本功练好,面向对象玩的炉火纯青,其他的不过是稍加训练,跟卖艺的学几招也能称霸一片天.哈哈 牛吹的

操作数据库的魔法函数

function bind(){ global $dbhost,$dbuser,$db,$dbpass; //首先我们不知道外面会传入多少个参数//可以用func_get_args()方法来获取全部传入参数,这个方法返回全部参数的数组//和func_get_args()方法相对应的其实还有一个func_num_args()来获取参数个数$args = func_get_args(); //通过使用array_shift方法,使传入的第一个参数,后后面的参数分开,其实就是把sql语句,和//后面传

php使用魔法函数和不使用魔法函数比较

/** * use magic 0.31868386268616s * not use magic 0.11876797676086s */ class Test { private $varstr = "123"; function __get($name) { return $this->varstr; } } function microtime_float() { list($usec, $sec) = explode(" ", microtime()

4-1 减少PHP魔法函数的使用 __get($name)返回私有变量 取执行时间

魔法函数执行时间0.635 <?php class Test{ private $var='123'; public function __get($name) { return $this->var; } } function current_time(){ list($usec,$sec)= explode(' ',microtime()); return ((float)$usec+(float)$sec); } $_start=current_time(); $i=0; while (