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 ...