關於python呼叫本類內方法

2021-09-14 05:25:53 字數 600 閱讀 2748

這兩天在學python寫爬蟲,前幾天寫爬蟲的時候,寫出過類似於這樣的**
class i_forum:

******

******

def find_group(self,html,opinion=".*"):

re_temp =re.search(opinion,html,re.m)

self.bulk=i_forum.group(self)#這是問題所在,應該是self.group()這個函式呼叫並修改了類內的值

return re_temp

結果執行出來整個類裡面的值都是一樣的。

左找右找挑不出毛病來,於是索性跳過幹其他事去了,過了一會看關於self的詳細解釋時突然想到self是乙個例項,而類名則相當於乙個模板。如果採用類名+方法名的辦法似乎訪問的都是記憶體裡同一塊區域,於是去查了一般,在這篇文章中,作者指出「類屬性在同一類及其子類之間共享,修改類屬性會影響到同一類及其子類的所有物件」

這就是這個bug的問題所在。

總的來說這次的bug關鍵在於:類名.方法名呼叫的是類屬性,會對所有例項產生影響。而self.方法名呼叫的是例項屬性,只對其本身有影響。

使用this 實現本類構造方法的呼叫

本程式定義了3個構造方法,並且這3個構造方法之間可以進行相互呼叫,即雙參構造呼叫單參構造,單參構造呼叫無參構造 這樣不管呼叫哪個構造方法都可以進行提示資訊的輸出。class person6 public void setname string name public intgetage public...

關於非同步方法呼叫

在我們的程式中,很多時候會有一些耗時較長的運算,我們為了保證使用者體驗,讓使用者介面能得到及時的響應。我們一般會採用多執行緒操作,讓耗時操作在 後台完成,比如我們在上傳檔案或其他一些需求要在介面顯示進度條的例子。在 net2.0中為我們供了乙個backgroundworker類可以完成類似的需求,具...

php7擴充套件開發 5 本類內函式呼叫

2.1在php person.h中增加 php method person ce,callback php method person ce,setkey 2.2 實現 在php initest.h中開啟全域性變數設定塊的注釋,改成自己相要的變數如下 新增定義 zend begin arg info...