# 魔术函数
\_\_name\_\_ 文件调用者、函数的名字
\_\_author\_\_
\_\_doc\_\_
\_\_len\_\_ 方法 有此方法的对象 可以用len计算长度 len(obj)
\_\_slots\_\_ 属性 限制类能添加的属性
\_\_str\_\_ 方法 返回打印对象时 显示的内容
\_\_repr\_\_ 方法 返回(返回对象时) 显示的内容
class Student(object):
def __init__(self, name):
self.name = name
def __str__(self):
return 'Student object (name=%s)' % self.name
__repr__ = __str__ # 偷懒用法
\_\_iter\_\_ + next()方法 类想被用于for ... in循环
\_\_getitem\_\_ list那样按照下标取出元素 也可以切片; 是下标int还是切片slice 参数需要做判断
\_\_getattr\_\_ 没有找到属性/方法的情况下,调用\_\_getattr\_\_ 可以返回匿名方法 默认返回就是None
\_\_call\_\_ 吧对象看成函数 直接调用 `s = Student('那谁'); s()`
\_\_metaclass\_\_ 指定元类 控制类的创建行为; 我不要用type创建类 我要用type的子类(期间对类做一些修改 然后再用type创建)