在python中有一些方法被称之为魔法方法,在对对象进行操作的时候会自动调用。
doc
- 查看说明文档 ```python class FirstClass(object): “””我是说明文档””” pass
print(FirstClass.doc)
<a name="puBgT"></a>####<a name="PH6au"></a>#### __mudule__- 查看类所属模块- 从下代码结果可以知道,FirstClass在main主程序中- 如果是从别的模块导入,如下所示从pandas导入的DataFrame类属于pandas.core.frame模块```pythonimport pandas as pdclass FirstClass(object):"""我是说明文档"""passprint(FirstClass.__module__)print(pd.DataFrame.__module__)
class
- 查看对象属于什么类,如下,FirstClass属于type类 ```python class FirstClass(object): “””我是说明文档””” pass
print(FirstClass.class)
<a name="z21jQ"></a>####<a name="yC80f"></a>#### __call__- 使类的实例化可以被调用```pythonclass FirstClass(object):passfirst = FirstClass()first()

class FirstClass(object):def __call__(self):return 666first = FirstClass()print(first())

new和init
- new方法用于继承基类的时候创建子类
init方法用于实例化的时候初始化方法
- 如下所示,实例化的时候先调用了new方法,传入的cls表示FirstClass本身
- 然后初始化了self.phone属性,传入的self表示实例对象本身
first这个对象属于tuple类 ```python class FirstClass(tuple): def new(cls): print(“我要创建一个tuple类!!!”) return super().new(cls)
def init(self): print(“我要初始化一个tuple实例!!”) self.phone = 110
first = FirstClass() print(isinstance(first, tuple)) print(first.phone)
<a name="m4Xty"></a>#### __del__- 在对象被回收或者删除的时候自动调用,又成为析构方法```pythonclass FirstClass(tuple):def __new__(cls):print("我要创建一个tuple类!!!")return super().__new__(cls)def __init__(self):print("我要初始化一个tuple实例!!")self.phone = 110def __del__(self):print("我要被干掉了!!!")first = FirstClass()
str
- 返回打印值 ```python import datetime
class Student: def init(self, date): self.date = date
def __str__(self):# 可读性return self.datedef __repr__(self):# 维护性return self.date
s = Student(datetime.datetime.now())
print(s)
```

