Python 020 幾個經典內建方法

2022-05-30 23:00:08 字數 2973 閱讀 7104

1.內建方法表示:__名字__

幾種名稱: 1)雙下方法 2)魔術方法 3)類中的特殊方法/內建方法

類中的每乙個雙下方法都有它自己的特殊意義;所有的雙下方法沒有 需要你在外部直接呼叫的

父類object都帶有這些方法,而總是有一些其他的 內建函式 特殊語法來觸發雙下方法

2.__call__()方法:

class

a:

def__call__(self, *args, **kwargs):

print('

物件()自動觸發我!')

a =a()

a()

#這兩個步驟還可以寫為a()()

這時候就需要引入另乙個類,讓它執行__call__方法

class

a:

def__call__(self, *args, **kwargs):

print('

執行call方法了')

class

b:

def__init__

(self,cls):

print('

在例項化a之前做一些事情')

self.a = cls() #

例項化a的物件

self.a() #

呼叫a類中的call方法

print('

在例項化a之後做一些事情')

b(a)

#只暴露b,不暴露a

2)__len__方法:

a:遇到len(obj)會自動觸發obj的__len__方法 

class

a:

def__init__

(self,obj):

self.obj =obj

def__len__

(self):

return

len(self.obj)

a = a('

wwwwww')

print

(len(a))

#結果為6

3)__str__方法:

a:會自動觸發該方法的幾種情況

1)print乙個物件相當於呼叫乙個物件的__str__方法

2)str(obj),相當於執行obj.__str__方法

3)'%s' % obj相當於執行了obj.__str__方法

b:如果類中沒有__str__方法,會自動執行父類的object的__str__方法,但是只會返回給你乙個記憶體位址,因為它不知道你想要得到什麼屬性;

class

a:

pass

a =a()

print

(a)#

輸出結果:

<__main__.a object at 0x0000024f722690f0>

#類中含有__str__方法:

class

a:

def__str__

(self):

return ('

%s, %s, %s

')%(self.name,self.age,self.cls)

def__init__

(self,name):

self.name =name

self.age = 15self.cls = '

python

'a = a('

zhou')

print

(a)b = a('

liu'

)print

(b)#

輸出結果

zhou, 15, python

liu, 15, python

c:有什麼用處,特別好用能不用你呼叫就自動輸出一些你需要顯示的內容;

4)__new__方法:

a:__new__和__init__的千絲萬縷

__new__:開闢記憶體空間,屬於物件的,把物件的空間作為返回值傳給self,執行init方法;  類的構造方法

__init__:給物件封裝屬性;   類的初始化方法

看他們的執行順序:

class

a:

def__new__(cls, *args, **kwargs):

print('

執行了__new__方法')

return object.__new__

(cls)

def__init__

(self):

print('

執行了__init__方法')

a =a()

#執行結果

執行了__new__方法

執行了__init__方法

#所以__new__是在物件例項化之前呼叫的,還沒有開闢空間傳給self,所以這裡會把cls類的空間傳進來;

new的金典題目單例類:

單例類:在例項化物件後,每個物件的開闢的空間一樣,就是單例類;

class

a: _name =none

def__new__(cls, *args, **kwargs):

ifnot

cls._name:

cls._name = object.__new__

(cls)

return

cls._name

def__init__

(self):

pass

a =a()

print

(a)b =a()

print

(b)#

輸出結果

<__main__.a object at 0x00000221704e9240>

<__main__.a object at 0x00000221704e9240>

Python內建的幾個函式

說到字串 string 相信大家都很熟悉了。它是我們最常用的資料型別之一,括在引號內。但是python中的字串操作,具體應該怎麼搞呢?string1 yyy zzz 字串1,類似於路徑 string2 123.456.789 字串2,類似於版本 string3 字串3,將下面的列表內容新增到裡面 j...

python的幾個內建函式

python的內建函式功能比較豐富,而且相當靈活,目前掌握了幾個比較常用的 1.lambda lambda其實就是一條語句,lambda x body。x是lambda函式的引數,引數可以有任意多個 包括可選引數 body是函式體,只能是乙個表示式,並且直接返回該表示式的值。f lambda x x...

python的幾個經典程式

1.python快速判斷乙個數是否為素數 本程式實現的功能是判斷乙個數是否為素數 n input 請輸入乙個整數 n int n if n 2 print n,是素數 偶數必然不是素數 elif n 2 0 print n,不是素數 else 大於5的素數必然出現在6的倍數的兩側 因為6x 2,6x...