1. 程式人生 > >Python學習之旅(二十)

Python學習之旅(二十)

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的方法名稱與函數綁定

>>> class
Run(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學習之旅(二十)