Python物件導向 二)類的建立與訪問

2022-07-22 18:57:12 字數 1947 閱讀 3517

python不允許例項化物件訪問類的私有資料,但是可以利用object._classname__attr來訪問屬性,例如:

>>> class myclass():

__var=10

>>> c=myclass()

>>> c.__var

traceback (most recent call last):

file "", line 1, in c.__var

attributeerror: 'myclass' object has no attribute '__var'

>>> c._myclass__var

10>>>

>>> class myclass():

'這是類的文件'

publicvar=10

def __init__(self,vara,varb):

self.vara='aa'

self.varb='bb'

def displayvar(self):

print('vara =',self.vara)

print('varb =',self.varb)

print('publicvar=',myclass.publicvar)

>>> myclass.__doc__ # 類的文件字串

'這是類的文件'

>>> myclass.__name__ # 類名

'myclass'

>>> myclass.__module__ # 類定義所在的模組

'__main__'

>>> myclass.__bases__ # 類的父類,預設所有類繼承自object類

(,)>>> myclass.__dict__ # 類的屬性,返回乙個字典

>>>

可以在自己的類中重寫方法

方法名描述

__init__(self[,args..])

建構函式

__del__(self)

析構函式

__repr__(self)

轉化為供直譯器讀取的形式

__str__(self)

將值轉化為適於人閱讀的形式

__cmp__ (self,x)

物件比較

python 使用了引用計數這一簡單技術來跟蹤和**垃圾,當乙個物件沒有被引用時就會被自動釋放,但是釋放並不是立即的,而是直譯器在合適的時機將垃圾物件的記憶體**。

>>> class myclass():

def __del__(self):

print('delete this object')

def __init__(self):

print('init this object')

>>> c= myclass() # 引用為1

init this object

>>> b=c # 引用為2

>>> d=b # 引用為3

>>> del c # 引用為2

>>> del b # 引用為1

>>> del d # 引用為0 準備釋放記憶體

delete this object

>>>

可以使用以下函式的方式來訪問屬性:

hasattr(emp1, 'age')    # 如果存在 'age' 屬性返回 true。

getattr(emp1, 'age') # 返回 'age' 屬性的值

setattr(emp1, 'age', 8) # 新增屬性 'age' 值為 8

delattr(emp1, 'age') # 刪除屬性 'age'

# 屬性名記得加單引號,否則會認為是乙個與屬性名同名的變數

python物件導向程式設計(二)類的繼承

繼承性最根本的作用就是避免編寫重複 在建立乙個類的時候,形參中要定義乙個類名,表示該類是從哪個類繼承而來的,如果沒有合適的繼承類,用object,因為所有的類最終都會繼承object這個類。class person object pass p person 類怎麼繼承呢,在es6中類的繼承是通過ex...

物件導向(二)類的自動載入

spl autoload register callable autoload function bool throw true bool prepend false bool spl autoload register 函式可以註冊任意數量的自動載入器,當使用尚未被定義的類 class 和介面 i...

C 物件導向實驗二 類與物件

類的建立和使用類來建立物件。類的資料成員的宣告。成員函式的宣告和定義。private,public訪問限定符的使用。使用提供的公有的成員函式給物件成員賦值。類 包含私有的資料成員 length,wide 和公有的成員函式 過載的建構函式oneclass,求和函式add,輸出顯示函式 display ...