python進階教程之內建屬性

2020-12-13 python大蛇

內建屬性

"teachclass.py"

class Person(object):

pass

python3.5中類的內建屬性和方法

經典類(舊式類),早期如果沒有要繼承的父類,繼承裡空著不寫的類

#py2中無繼承父類,稱之經典類,py3中已默認繼承object

class Person:

pass

子類沒有實現__init__方法時,默認自動調用父類的。 如定義__init__方法時,需自己手動調用父類的 __init__方法

常用專有屬性說明觸發方式

__init__構造初始化函數創建實例後,賦值時使用,在__new__後

__new__生成實例所需屬性創建實例時

__class__實例所在的類實例.__class__

__str__實例字符串表示,可讀性print(類實例),如沒實現,使用repr結果

__repr__實例字符串表示,準確性類實例 回車 或者 print(repr(類實例))

__del__析構del刪除實例

__dict__實例自定義屬性vars(實例.__dict__)

__doc__類文檔,子類不繼承help(類或實例)

__getattribute__屬性訪問攔截器訪問實例屬性時

__bases__類的所有父類構成元素類名.__bases__

__getattribute__例子:

class Itcast(object):

def __init__(self,subject1):

self.subject1 = subject1

self.subject2 = 'cpp'

#屬性訪問時攔截器,打log

def __getattribute__(self,obj):

if obj == 'subject1':

print('log subject1')

return 'redirect python'

else: #測試時注釋掉這2行,將找不到subject2

return object.__getattribute__(self,obj)

def show(self):

print('this is Itcast')

s = Itcast("python")

print(s.subject1)

print(s.subject2)

運行結果:

log subject1

redirect python

cpp

__getattribute__的坑

class Person(object):

def __getattribute__(self,obj):

print("---test---")

if obj.startswith("a"):

return "hahha"

else:

return self.test

def test(self):

print("heihei")

t.Person()

t.a #返回hahha

t.b #會讓程序死掉

#原因是:當t.b執行時,會調用Person類中定義的__getattribute__方法,但是在這個方法的執行過程中

#if條件不滿足,所以 程序執行else裡面的代碼,即return self.test 問題就在這,因為return 需要把

#self.test的值返回,那麼首先要獲取self.test的值,因為self此時就是t這個對象,所以self.test就是

#t.test 此時要獲取t這個對象的test屬性,那麼就會跳轉到__getattribute__方法去執行,即此時產

#生了遞歸調用,由於這個遞歸過程中 沒有判斷什麼時候推出,所以這個程序會永無休止的運行下去,又因為

#每次調用函數,就需要保存一些數據,那麼隨著調用的次數越來越多,最終內存吃光,所以程序 崩潰

#

# 注意:以後不要在__getattribute__方法中調用self.xxxx

相關焦點

  • python教程
    python視頻教程     文章底部留言 序號 給您發送視頻教程連結或者加微信 bigzql 索要Python
  • 書聲琅琅:好的Python入門教程
    好的Python入門教程,書聲琅琅教育番茄老師微信pykf20介紹,python語言現在應用非常廣泛,不管是大數據還是人工智慧,應用最多的語言還是python,因此對於許多小白來講,看到python從業者的高薪資,想要轉行,或者致力於python開發的朋友,如果要學習python,從零基礎開始,一定需要一套完整的學習路線。
  • python進階教程之變量
    變量進階目標01.a = 1a = "hello" a = [1, 2, 3] a = [3, 2, 1]python demo_list = [1, 2, 3]print("定義列表後的內存地址 %d" % id(demo_list))demolist.append(999) demolist.pop
  • Github標星5.6k的《Python進階》中文版下載
    今天就給大家分享一本進階向的Python書籍:《Python進階》。它是《Intermediate Python》的中文譯本,內容精練,難度差不多相當於學完本教室入門教程的程度。適合已經學完基礎的同學。
  • python高級進階 002第一個pyqt5程序
    瀏覽器版本過低,暫不支持視頻播放以下開始文字講解:在上一節的教程中,我們已經將圖形化界面開發的基本環境已經搭建完畢,本節,我們繼續使用pyqt5開發程序。app.exec_()主要作用是用死循環來監聽界面的關閉按鈕等界面控制項等事件__name__在本文件運行的時候,結果就是__main__使用__name__==『__main__『來模擬python程序主入口為了使得我們能夠對qtdesigner設計後生成的代碼更加熟悉,我們今後會更多直接使用純pyqt5代碼來編寫程序,當然,在熟悉以後,我們可以直接使用qtdesigner直接快速圖形化開發界面
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • Python高級進階 007 pyqt5消息盒子QMessageBox
    利用傳過來的事件對象我們通過輸出的形式,看到事件對象的屬性和方法,猜測到具體的調用方法。if __name__=="__main__": app=QApplication(sys.argv) mc=MyClass() app.exec_()相關文章:python高級進階#001
  • Python安裝教程和使用技巧
    下面連結是Python各版本的安裝包,需要哪個版本下載哪個版本,壓縮包裡邊有word版本的安裝教程,請一起下載!
  • python 類(3) 私有屬性/方法
    本來就是因為看別人的教程感覺不是很符合一個讀者,一個學習者的邏輯,所以想要將所學,儘可能寫成易讀易懂的樣子.慢慢努力吧內容提要類中的__變量python中,在類的定義中在變量名前加雙下劃線的變量,稱為類的私有屬性,其本意是不讓類的實例訪問變量class MyClass(object): def __init__(self): self.
  • Python機器學習·微教程
    該教程共分為11小節。在這個教程裡,你將學會:如何處理數據集,並構建精確的預測模型使用Python完成真實的機器學習項目這是一個非常簡潔且實用的教程,希望你能收藏,以備後面複習!接下來進入正題~這個微課程適合誰學習?如果你不符合以下幾點,也沒關係,只要花點額外時間搞清楚知識盲點就能跟上。
  • Python小白也可以學會的爬蟲教程
    前言有一段沒用 python 了,我也不知道自己為什麼對 python 越來越淡,可能自己還是比較喜歡 android ,畢竟自己第一次接觸編程就是 android,為了android學java,然後接觸的python,這次也是因為android
  • 【微筆記】houdini使用python創建城市教程筆記I
    昨天小編分享了houdini使用python製作城市的教程,講解得非常不錯,不過個人建議大家至少有一些python基礎和houdini python結合基礎學習會比較好,因為課程內容量比較大。小編也在同步學習,今天把第一部分的筆記1-8課 python基礎介紹內容筆記整理分享出來。在CG獵人vip群裡的同學可以獲得pdf版本,作為小福利吧。
  • 無所不能的python編程是怎麼快速畫圖的呢?5分鐘學會!
    >1.2turtle 繪圖屬性繪圖有三個要素:位置,方向,畫筆。python學習路線分三大階段:基礎-進階-框架-項目實戰基礎第一階段:基礎Python的理解。基礎第二階段面對對象編程(注重編程能力)基礎第三階段面向對象「設計思想」-封裝-繼承。基礎第四階段python高級專題。
  • 入門Python, 看這些資料就夠了
    目錄:第一部分: Python入門&進階教程第二部分: Python Web框架第三部分: Python擴展資料推薦的學習路徑: 1. 使用實驗樓的開箱即用環境快速刷完Python3簡明教程,django基礎教程;2.
  • python基礎學習教程:Python基礎語法
    教程」關注我們喲!>>> '''在學習過程中有什麼不懂得可以加我的python學習交流扣扣qun,934109170群裡有不錯的學習教程、開發工具與電子書籍。與你分享python企業當下人才需求及怎麼從零基礎學習好python,和學習什麼內容。'''Window 上在安裝 Python 時已經安裝了交互式編程客戶端,提示窗口如下:
  • 好程式設計師Python教程分享常見的Python面試題
    好程式設計師Python教程分享常見的Python面試題,程式設計師面試難免會需要進行筆試,筆試是考驗程式設計師基礎功底的重要環節,根據很多小夥伴的面試反饋,今天總結分享了一些常見的Python面試題,想要看Python面試是不是可以順利通過,這些常見的Python面試題你應該看看。
  • Python網絡爬蟲教程+數據分析+機器學習
    程式設計師小樂 舉報   前段時間,小夥伴多次在後臺留言詢問Python爬蟲教程
  • Python 數據處理庫 pandas 進階教程
    本文是它的進階篇。在這篇文章中,我們會講解一些更深入的知識。前言本文緊接著前一篇的入門教程,會介紹一些關於pandas的進階知識。建議讀者在閱讀本文之前先看完pandas入門教程。 同樣的,本文的測試數據和源碼可以在這裡獲取: Github:pandas_tutorial 。
  • Python的私有化屬性
    _age = "年齡" # 受保護的屬性(proteced),類裡面或者是子類中可以訪問該變量 self.__salary = "工資" # 私有變量, 只能在當前類裡面訪問 print(self.
  • 我精選的幾本 Python 開源PDF教程
    在這期間,正如你所見,我推薦的教程其實是可以數的過來的,經典的、真正好的教程還是少的。有些教程也被我反覆推薦過多次,它們是真正好的。我分享資料,始終會堅持的原則主要有兩條:今天我把過去推過的教程,按照入門和進階維度,分為Python、數據分析、算法刷題、計算機基礎、機器學習和深度學習這幾個方向,全部整理一遍。