類的屬性訪問特性

重點

python中實例訪問屬性的順序爲:先查找同名的實例屬性並返回值,如果找不到就會查找同名的類屬性並返回值。

class MyClass(object):
	name = 'default'
	
	def __init__():
		self.age = 18

if __name__ == '__main__':
	c = MyClass()
	# 訪問的是類屬性 等同於 c.__class__.name
	c.name
	# 需要注意這是動態創建實例屬性
	c.name = 'ww'
	print(c.name)
	print(c.__class__.name)
	# 結果不同分別是 ww 和 default 

小結

由於類的訪問順序問題,我們需要特別注意實例在訪問屬性時,盡力避免實例對類屬性的直接訪問,尤其是賦值,因爲賦值是屬於創建類屬性同名的實例屬性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章