python中object的方法——魔法方法

正如java有个顶级类Object一样,Object类提供了hashCode equals toString等一系列方法。

那么python中的object也是一样,并且这些方法感觉上会更强大,更灵活。

本文仅做一个总结,方便日后查阅。


  • __slots__ 限制类的属性
  • __len__() 实现了它才能被len()方法调用
  • __str__() 和 __repr__() 前者是print()方法输出对象时调用,后者是在命令行直接对象回车调用
  • __iter__()和__next__() 配合将类变成Iterator
  • __getitem__()和__setitem__(),__delitem__()将类变成 list
  • __getattr__() 当getattr()方法没有找到属性时调用 可以对类中的所有属性和方法进行动态管理
  • __call__() 当直接在对象上(),也就是调用对象时,调用

以上的例子

  • __new__() 创建实例self
  • __init__() 初始化,用self去绑定属性
  • __enter__() with语句中会用,执行with内层的代码前调用,注意顺序with语句会__init__实例化
  • __exit__() with语句中会用,执行with内层的代码后调用
  • __import__() 动态加载类 相当于import module 如果有package加上fromlist关键字指定导入的py文件

更多定制类,详见python官方文档

你可能感兴趣的:(python)