魔法方法:属性访问

__getattr__(self,name) 当用户试图访问name,而name属性不存在时就会调用getattr

__getattribute__(self,name) 当用户试图访问name时就会调用getattribute

__setattr__(self,name,value)当name被设置为value的时候就会调用setattr

__delattr__(self,name)当name属性被删除时就会调用delattr

只有重写以上四个魔法方法,就可以改变属性访问

时间: 2024-08-05 15:25:22

魔法方法:属性访问的相关文章

045魔法方法:属性访问

属性访问:__getattr__(self,name)  定义当用户试图获取一个不存在的属性时的行为 __getattribute__(self,name)  定义当该类的属性被访问时的行为 __setattr__(self,name,value)  定义当用一个属性被设置时的行为 __delattr__(self,name)  定义当用一个属性被删除时的行为 例:>>> class C:  ...     def __getattribute__(self, name):       

python魔法方法-属性访问控制

属性访问控制 所谓的属性访问控制就是控制点号访问属性的行为,而且不仅是类的外部,连类的内部也受控制,代码见真章,边看代码边解释: __getattr__(self, item) 定义当访问不存在的属性时的行为,注意是不存在的属性. class Foo(object): def __init__(self, value): self.value = value def __getattr__(self, item): print item # 查看得到的参数是什么 print type(item)

Python类属性访问的魔法方法

Python类属性访问的魔法方法: 1. __getattr__(self, name)- 定义当用户试图获取一个不存在的属性时的行为 2. __getattribute__(self, name)- 定义当该类的属性被访问时的行为 注意:当__getattr__与__getattribute__同时重写时,访问属性时,优先调用__getattribute__,只有当被访问的属性不存在时才触发__getattr__ 3. __setattr__(self, name, value)- 定义当一个

Python3 魔法方法:属性访问

1.与属性访问有关的魔法方法 __getattr__(self,name) 定义当用户试图获取某一不存在的属性时的行为 __getattribute__(self,name) 定义当该类属性被访问时的行为 __setattr__(self,name,value) 定义一个属性被设置时的行为 __delattr__(self,name) 定义一个属性被删除时的行为 注意: def __setattr__(self, name, value): self.name = value + 1 #此代码试

Python基础教程(第九章 魔法方法、属性和迭代器)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5437223.html______ Created on Marlowes 在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.前面几章中已经出现过一些这样的名称(如__future__),这种拼写表示名字有特殊含义,所以绝不要在自己的程序中使用这样的名字.在Python中,由这些名字组成的集合所包含的方法称

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第09章 | 魔法方法、属性和迭代器

这一章,有点抽象,看着有点蛋疼! 双下划线__future__或单下划线有特殊含义,在Python中,这些名字的集合称为魔法方法:最重要的是__init__和一些处理访问对象的方法,这些方法允许你创建自己的序列或者是映射. ------ 准备工作: 将__metaclass__=type放在模块的最开始位置,以确保类时最新式的.考虑下面两个类 class NewStyle(object): more_code_here class OldStyle: more_code_here 如果文件以__

《Python基础教程(第二版)》学习笔记 -&gt; 第九章 魔法方法、属性和迭代器

准备工作 >>> class NewStyle(object): more_code_here >>> class OldStyle: more_code_here 在这两个类中,NewStyle是新式的类,OldStyle是旧式的类,如果文件以__metaclass__ = type 开始,那么两个类都是新式类. 构造方法 构造方法,当一个对象被创建后,会立即调用构造方法.Python中创建一个构造方法,只要把init方法的名字从简单的init修改成__init__

python基础教程_学习笔记11:魔法方法、属性和迭代器

魔法方法.属性和迭代器 在python中,有的名称会在前面和后面各加上两个下划线,这种写法很特别.它表示名字有特殊含义,所以绝不要在自己的程序中使用这种名字.在python中,由这些名字组成的集合所包含的方法叫做魔法(或称特殊)方法.如果对象实现了这些方法中的某一个,那么这个方法会在特殊的情况下被python调用,而几乎没有直接调用它们的必要. 准备工作 为了确保类是新型的,应该把赋值语句__metaclass__=type放在你的模块的最开始,或者(直接或间接)子类化内建类(实际上是类型)ob

魔法方法和属性

在python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别,同时表示名字有特殊含义,所以绝不要在自己的程序中使用这种名字. 在python中,这种名字组成的集合所包含的方法称为魔法(或特殊)方法. 如果对象实现了这些方法中的某一个,那么这个方法会在特殊的情况下(确切的说是根据名字)被python调用. 很久以前(Python2.2中),对象的工作方式就有了很大的变化.这种改变产生了一些影响,但对于刚开始使用python的人来说,大多数都不重要. 值得注意的是,尽管可能是用的是新版的