物件導向(私有)屬性和方法

2021-08-21 10:41:35 字數 935 閱讀 1336

1、屬性

(1)例項屬性:即__init__(self)中的屬性。需要先例項化乙個物件,然後才能被呼叫。

(2)類屬性:即寫在乙個類中,方法外面的屬性。供整個類及由類派生出來的物件使用,通過類名點屬性呼叫。

2、方法

(1)例項方法:即引數中含有self的方法,需要先例項化乙個具體物件,通過物件呼叫該方法。其中,self可以理解成乙個形參,而對應的實參是例項化物件。

例如:先例項化乙個物件,obj =tool(「錘子」),那麼self.name = name,實際上就是obj.name = name,即name指向obj物件空間,把「錘子」賦值給name。

(2)類方法:將@classmethod寫在類方法上面,並將cls設為該方法的預設引數。通過類名點方法名呼叫類方法。類方法可以操作類屬性。

(3)靜態方法:將@staticmethod寫在靜態方法上面,通過類名點方法呼叫該方法。靜態方法即沒有可以操作的類屬性的類方法。

3、私有化屬性

(1)xx: 公有變數;

(2)_x: 單前置下劃線,私有化屬性或方法。from somemodule import *禁止匯入,類物件和子類可以訪問;

(3)__xx:雙前置下劃線,避免與子類中的屬性命名衝突,無法在外部直接訪問(名字重整所以訪問不到);

(4)__xx__:雙前後下劃線,使用者名字空間的魔法物件或屬性。例如: __init__  , __ 不要自己發明這樣的名字;

(6)通過name mangling(名字重整(目的就是以防子類意外重寫基類的方法或者屬性)如:_class__object)機制就可以訪問private了。

(7)父類中屬性名為 __名字的,子類不繼承,子類不能訪問。

(8)如果在子類中向 __名字賦值,那麼會在子類中定義的乙個與父類相同名字的屬性。

(9)__名字的變數、函式、類在使用 from *** import * 時都不會被匯入。

python物件導向之私有屬性和私有方法

前面帶兩個下劃線表示對變數進行私有化 外部不能隨便的訪問和更改 class student object def init self,name,score 前面帶兩個下劃線表示對變數進行私有化 外部不能隨便的訪問和更改 self.name name self.score score def get ...

Python物件導向 4 私有屬性和私有方法

私有屬性和私有方法 應用場景 定義方式 class women def init self,name self.name name self.age 18 def secret self print 我的年齡是 d self.age xiao mei women 小美 私有屬性在外界不能被直接訪問 ...

Python物件導向之私有屬性和方法

定義方式 在定義屬性或者方法時,在屬性名或者方法名前面增加兩個下劃線,定義的就是私有屬性或方法 沒使用私有屬性前 class women def init self,name,age self.name name self.age age def secret self print s 的年齡是 d...