# 魔術函數
\_\_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創建)