Python 面向对象 —— 特殊函数

来源:互联网 发布:snapchat网络无法连接 编辑:程序博客网 时间:2024/06/06 03:36

类的成员中以__开头和结尾的(__xx__)为特殊函数,可以在外部直接访问,当然最直接的以及设计这一语法糖的初衷还是采用其重载形式。
注:1. 一般接口是固定的,不要轻易更改;

  • __call__:括号运算符重载;

0. __new__ vs. __init__

在调用对象的构造方法时,Python 会调用 __new__ 创建对象,单后调用__init__ 初始化属性

1. __repr__ vs. __str__

功能类似于 Java 类中的 toString() 方法;

一般 Python 会提供一个默认实现,比如,

return '<%s(%r)>' %(self.__class__, self.__dict__)

2. 逻辑运算

返回 boolean

  • __lt__:< 的重载
  • __eq__:判等;

3. __add__ vs __radd__

返回对象实例;

obj + obj ⇒ __add__
integer + obj ⇒ __radd__

4. __setattr__ __getattr__ __delattr__

class Storage(dict):    def __setattr__(self, key, value):        self[key] = value             # 重写dict, 通过`.`赋值    def __getattr__(self, key):        try:            return self[key]        except KeyError:            return None    def __delattr__(self, key):        try:            del self[key]        except KeyError:            return None    def __call__(self, key):        try:            return self[key]        except KeyError:            return None
0 0
原创粉丝点击