Python學習之旅(二十)
阿新 • • 發佈:2018-12-01
mil 循環 函數 type() 高級編程 裝飾器 pri 綁定 沒有
Python基礎知識(19):面向對象高級編程(Ⅱ)
定制類
形如“__xx__”的變量或函數在Python中是有特殊用途的
1、__str__
讓打印出來的結果更好看
__str__:面向用戶;__repr__:面向程序員
2、__iter__
使一個類能夠實現for循環的功能
3、__getitem__
使類能夠按照下標取元素
4、__getattr__
動態返回一個屬性,當想找的屬性不存在時不會報錯
註:只能用在屬性不存在的情況下
5、__call__
(1)直接對實例進行調用
(2)定義參數
callable:判斷一個變量是否是可調用對象
>>> s=Student()>>> callable(Student) True >>> callable(s) False >>> callable(abs) True >>> callable("more") False
使用枚舉類
創建枚舉首先要導入Enum類
使用@unique
裝飾器保證沒有重復值
使用元類
type
(1)可以查看一個類型或變量的類型
(2)以返回一個對象的類型,又可以創建出新的類型
創建一個class對象,type()
函數依次傳入3個參數:class的名稱;繼承的父類集合;class的方法名稱與函數綁定
>>> classRun(object): pass >>> class Fly(object): pass >>> class Swim(object): pass >>> def test(self): print("Wow,so pretty.") >>> Duck=type("Duck",(Run,Fly,Swim),dict(hello=test)) >>> duck=Duck() >>> duck.hello() Wow,so pretty.
metaclass
metaclass允許創建類或者修改類
要編寫一個ORM框架,所有的類都只能動態定義,這時候就需要用到metaclass
Python學習之旅(二十)