目录
__getitem__/__setitem__/__delitem__
__getslice__/__setslice__/__delslice__
__doc__
表示类的描述信息
__module__和__class__
__module__:表示当前操作的对象在哪个模块
__class__:表示当前操作的对象的类时什么
__init__
初始化方法,通过类创建对象时,自动触发执行
__del__
当对象在内存中被释放时,自动触发执行
注:此方法一般无需定义,因为python是高级语言,程序员无需关心内存的分配和释放,因此工作都是交给python解释器来执行,所以,__del__的调用时由解释器在进行垃圾回收时自动触发执行的。
__call__
对象后面加括号,触发执行
注意:__init__方法的执行是由创建对象触发的,即:对象=类名();而对于__call__方法的执行是由对象后加括号触发的,即:对象()或者类()()
# -*- encoding=utf-8 -*-
class Foo(object):
def __init__(self):
pass
def __call__(self, *args, **kwargs):
print("__call__")
c = Foo()
c()
Foo()()
__dict__
类或对象中的所有属性
类的实例属性属于对象;类中的类属性和方法等属于类。
# -*- encoding=utf-8 -*-
class Foo(object):
country = "douzi"
def __init__(self, name, count):
self.name = name
self.count = count
def func(self, *args, **kwargs):
print("func")
# 获取类的属性,即:类属性,方法
print(Foo.__dict__)
# 获取对象obj1的属性
obj1 = Foo("test", 134)
print(obj1.__dict__)
__str__
如果一个类中定一个__str__方法,那么在打印对象时,默认输出该方法的返回值。
class Foo(object):
def __str__(self):
return "douzi"
t = Foo()
print(t)
__getitem__/__setitem__/__delitem__
用于索引操作,如字典。以上分别为获取、设置、删除数据。
表示实现了该三个方法,该类即当列表用。
class Foo(object):
def __getitem__(self, item):
print("__getitem__:", item)
def __setitem__(self, key, value):
print("__setitem__:", key, value)
def __delitem__(self, key):
print("__delitem__:", key)
obj = Foo()
res = obj["k1"] # 自动触发执行 __getitem__
obj["k2"] = "douzi" # 自动触发执行 __setitem__
del obj["k1"] # 自动触发执行 __delitem__
__getslice__/__setslice__/__delslice__
该三个方法用于分片操作,如:列表
class Foo(object):
def __getslice__(self, i, j):
print("__getslice__:", i, j)
def __setslice__(self, i, j, sequence):
print("__setslice__:", i, j, sequence)
def __delslice__(self, i, j):
print("__delslice__:", i, j)
obj = Foo()
obj[0:2]
obj[0:2] = [11, 22, 33, 44]
del obj[0:2]