python 內建函式 魔法屬性 詳解

2021-10-19 19:25:33 字數 4038 閱讀 5213

3. 魔法屬性

3.2 `__repr__`--例項視覺化

3.3 `__eq__`---判等,`__hash__`---計算hash值

map是乙個將乙個或多個序列對映成乙個序列的函式。第乙個引數為function,function可以是單或多引數。接著是乙個或多個序列。例如:

reduce對序列的返回值進行累加。

counter類, 它是dict的subclass, 用來快速地統計hashable object的數量,數量(也就是value)用整形,十進位制,float表示。如下:

注意:它是乙個dict,所以value也可以是0或負數,還可以是其他的。

這個類有幾個常用的函式,most_common(),elements()和subtract()

elements()返回乙個key的序列,key的數目為key對應的value數目,如果value為0或者負,則不顯示。栗子如下:

most_common(n)函式返回出現詞數最多的前n個key,也就是value最大的前n個key。栗子如下。但是,value必須是可以比較的,才可以使用這個函式。

subtract()函式,顧名思義。

魔法屬性,python中乙個特殊存在,程式設計必由之路,速度之城的熊耙子,巨蟒大蛇的親兒子,文曲星的墨筆子,武曲星的刀把子,二師兄的鐵耙子,格魯伊的槓把子,,,,我編不下去了,開始正文。

這個屬性記錄python物件的所有屬性,重點落在python物件屬性上,見**細品:

from datetime import date

class

holiday

:""" holiday """

class_attr =

"class_attr"

def__init__

(self, date, name)

: self.date = date

self.name = name

def__hash__

(self)

:return self.date.__hash__(

)def

__eq__

(self, other)

:return self.date == other.date

"""holiday是乙個類定義,但是python中處處都是物件,所以holiday也是乙個物件,print(holiday.__dict__)可以得到很多屬性。

"""print

(holiday.__dict__)

"""# output:

""""""

holiday的物件

"""holiday = holiday(date(

2010,3

,24),

"birthday"

)print

(holiday.__dict__)

"""# output:

"""def

function_is_object()

: a =

1return a

"""函式也是物件

"""print

(function_is_object.__dict__)

"""# output:

{}"""

利用__dict__實現,dict與類物件的轉換

classmy:

def__init__

(self, dic)

: self.__dict__.update(dic)

defto_dict

(self)

:return self.__dict__

dic =

my = my(dic)

print

(my.name)

# output:

# 小明

xiaoming = my.to_dict(

)print

(xiaoming)

# output:

#

__repr__represent的縮寫,用來視覺化類物件(instance,也就是例項),或者顯示其屬性值,主要是為了:

from datetime import date

class

holiday

:""" holiday """

class_attr =

"class_attr"

def__init__

(self, date, name)

: self.date = date

self.name = name

def__hash__

(self)

:return self.date.__hash__(

)def

__eq__

(self, other)

:return self.date == other.date

holiday = holiday(date(

2010,3

,24),

"birthday"

)print

(holiday)

# output:

# <__main__.holiday object at 0x7f79449b77d0>

# 新增__repr__後

class

holiday:.

..# 同上一樣,省略

def__repr__

(self)

:return f'(date(), "")'

holiday = holiday(date(

2010,3

,24),

"birthday"

)print

(holiday)

# output:

# (date(2010-03-24), "birthday")

哥倆好,功能相關,所以放在一起介紹。在list轉set和往字典中新增key-value對的時候,會預設呼叫__hash__函式,實現hash分桶操作。__eq__則是判斷兩個物件例項是否相等。

自定義__hash__可以控制set時判重標準。

from datetime import date

class

holiday

:""" holiday """

class_attr =

"class_attr"

def__init__

(self, date, name)

: self.date = date

self.name = name

def__hash__

(self)

:print

("hash"

)return self.date.__hash__(

)def

__eq__

(self, other)

:print

("eq"

)return self.date == other.date

def__repr__

(self)

:return f'(date(), "")'

class

holiday

= holiday(date(

2010,3

,24),

"birthday"

)hset =

set(

[holiday]

)# output:

# hash

holidayb = holiday(date(

2010,3

,2),

"birthday"

)holiday == holidayb

# output:

# eq

# false

python高階之函式和類內建魔法屬性

關於物件的魔法方法我們已經講得太多,但是對於類或函式內建的魔法屬性和功能我們涉及較少,下面系統了解一下類和函式的內建屬性。class person object pass def get name pass if name main person person print dir get name ...

Python 高階 魔法屬性

1.doc class foo 檢視說明資訊 def func self pass print foo.doc 輸出結果 檢視說明資訊learn 26 2 magic test.py 2.module 表示當前操作的物件在哪個模組 class 表示當前操作的物件的類是什麼 class person ...

python中的魔法屬性

目錄無論人或事物往往都有不按套路出牌的情況,python的類屬性也是如此,存在著一些具有特殊含義的屬性,詳情如下 class foo 描述類資訊,這是用於看片的神奇 def func self pass print foo.doc 輸出 類的描述資訊test.py coding utf 8 clas...