Python 魔术方法及调用方式

魔术方法 调用方式 解释
__new__(cls [,...]) instance = MyClass(arg1, arg2) __new__ 在创建实例的时候被调用
__init__(self [,...]) instance = MyClass(arg1, arg2) __init__ 在创建实例的时候被调用
__cmp__(self, other) self == other, self > other, 等。 在比较的时候调用
__pos__(self) +self 一元加运算符
__neg__(self) -self 一元减运算符
__invert__(self) ~self 取反运算符
__index__(self) x[self] 对象被作为索引使用的时候
__nonzero__(self) bool(self) 对象的布尔值
__getattr__(self, name) self.name # name 不存在 访问一个不存在的属性时
__setattr__(self, name, val) self.name = val 对一个属性赋值时
__delattr__(self, name) del self.name 删除一个属性时
__getattribute(self, name) self.name 访问任何属性时
__getitem__(self, key) self[key] 使用索引访问元素时
__setitem__(self, key, val) self[key] = val 对某个索引值赋值时
__delitem__(self, key) del self[key] 删除某个索引值时
__iter__(self) for x in self 迭代时
__contains__(self, value) value in self, value not in self 使用 in 操作测试关系时
__concat__(self, value) self + other 连接两个对象时
__call__(self [,...]) self(args) “调用”对象时
__enter__(self) with self as x: with 语句环境管理
__exit__(self, exc, val, trace) with self as x: with 语句环境管理
__getstate__(self) pickle.dump(pkl_file, self) 序列化
__setstate__(self) data = pickle.load(pkl_file) 序列化
时间: 2024-10-10 11:57:47

Python 魔术方法及调用方式的相关文章

Python 魔术方法笔记

魔术方法总是被__包围, 如__init__ , __len__都是常见的魔术方法,这里主要写一下我遇到的一些魔术方法 setitem 对某个索引值赋值时 即可以进行赋值操作,如 def __setitem__(self, k, v): self.put(k, v) 在上述代码的情况下,可以执行p['key'] = value操作,即将key赋给k,value赋给v,执行put(k, v)函数.所以,__setitem__建立的前提,是要这个函数内的操作本来具有赋值的性质. getitem 使用

[学习记录]python魔术方法与抽象方法like型反思

之前一直没搞懂python的魔术方法是怎么回事,今天看到一篇讲的很好的文章,这里先把链接贴出来 总的来说魔术方法就是定义成用两条下划线包围方法名前后的一种方法,例如__init__,__del__等等 换句话说,当你在python中使用dir()时,看到的那么一大堆__方法__都是魔术方法,如下图 test类只定义了一个hello方法,但是dir展示了大量的魔术方法.这些魔术方法都是内置的,但是允许我们对它们进行重写. 对比一下会感觉有点像定义的接口类的抽象方法,定义出来作为模板,然后由子类对其

032.Python魔术方法__new__和单态模式

一 __new__ 魔术方法 1.1 介绍 触发时机:实例化类生成对象的时候触发(触发时机在__init__之前) 功能:控制对象的创建过程 参数:至少一个cls接受当前的类,其他根据情况决定 返回值:通常返回对象或None 对象.属性 对象.方法() 类.属性 类.方法() 1.2 基本用法 class MyClass(): abc = 123 def __new__(cls): #把class这个类传递__new__这个方法 print (123) return None #返回一个None

Python的方法及调用

首先放一张网上的图: 在类中定义的函数,有的称为普通函数,有的称之为方法,Python中有3中方法:实例方法.静态方法.类方法. 实例方法:函数必须有一个self参数 类方法:需要有@ classmethod 修饰符,修饰符下面的函数就称之为类方法,并且有个隐藏参数 cls. 静态方法:需要有@staticmethod修饰符,修饰符下面的函数就静态方法. 通过上图可以总结方法的调用关系: 1.实例可以调用所有方法,但是不能调用类里面的普通函数. 2.类可以访问普通函数,可以调用所有方法,调用实例

php -- 魔术方法 之 调用方法:__call()、__callStatic()

方法重载:当调用一个不存在或者权限不够的方法的时候,会自动调用__call()方法 public function __call($name,$args){}  :用对象调用方法 public static function __callStatic($name,$args){}: 用类调用静态方法 $name:被调用的方法名 $args:被调用的方法的参数列表数组 <?php //PHP方法重载 class Person{ //方法 private function test(){ echo

Python魔术方法

1. 查看属性 方法: __dir__ 意义: 返回类或者对象的所有成员名称列表.dir()函数就是调用__dir__().如果提供__dir__(),则返回属性的列表,否则会尽量从__dict__属性中收集信息. 如果dir([obj])参数包含方法__dict__(),该方法将被调用.如果参数不包含__dir__(),该方法将最大限度地收集参数信息. dir()对于不同类型的对象具有不同的行为: 如果对象是模块对象,列表包含模块的属性名. 如果对象是类型或者类对象,列表包含类的属性名,及它的

Python子类方法的调用(类方法)

class S(object): def Test(self): print("TEST") @classmethod def Test02(cls): print("class") @staticmethod def Test03(): print("Test03")class Test2(S): @classmethod def Test02(cls): print(cls) print("Test02 Method")a

python 魔术方法

import time func_count_time_dict = {} def count_time(func): global func_count_time_dict func_count_time_dict[func]=[1,time.localtime()] def wrapper(): global func_count_time_dict func() print 'func name: ',func.__name__ print 'count: ',func_count_tim

流动python - 什么是魔术方法(magic method)

我们经常看到各种各样的方法已经被包围了由双下划线,例如__init__,他们是魔术方法. 魔术方法python语言预订好"协议",在不同情况下不同的魔术方法,是隐式调用.我们重写这些方法,因此,操纵各种行为. class A(object): def __str__(self): return "I am A,2333" def __len__(self): return 42 a = A() print a#输出 "I am A,2333" p