物件導向2--靜態方法、類方法、屬性方法
方法
普通方法、靜態方法和類方法,三種方法在記憶體中都歸屬於類,區別在於呼叫方式不同。
- 普通方法:由物件呼叫;至少一個self引數;執行普通方法時,自動將呼叫該方法的物件賦值給self;
- 類方法:由類呼叫; 至少一個cls引數;執行類方法時,自動將該類賦給cls;
- 靜態方法:由類呼叫;無預設引數;
class Foo(object):
def __init__(self,name):
self.name = name
def ord_func(self):
print("普通方法")
@classmethod
def class_func(cls):
"""定義類方法,至少一個cls引數"""
print("類方法")
@staticmethod
def static_func():
"""定義靜態方法,無預設引數"""
print("靜態方法")
#呼叫普通方法
f = Foo('wupeiqi')
f.ord_func()
#呼叫類方法(類方法只能通過cls訪問類屬性)
Foo.class_func()
#呼叫靜態方法(一個通過類呼叫的普通函式,不能直接訪問類的任何屬性或方法)
Foo.static_func()
相同點:對於所有的方法而言,均屬於類(非物件)中,所以,在記憶體中也只儲存一份。
不同點:方法呼叫者不同、呼叫方法時自動傳入的引數不同。
屬性方法
@property裝飾器可以使被裝飾的方法成為一個屬性,類似其他語言的get方法
class Student(object):
def __init__(self, name, score):
self.name = name
self.__score = score
@property #例項.score 呼叫
def score(self):
return self.__score
@score.setter #例項.score = value 呼叫
def score(self,score):
if score < 0 or score > 100:
raise ValueError('invalid score')
self.__score = score
@score.deleter #del 例項.score 呼叫
def score(self):
del self.__score
print("score is deleted")
s = Student('Bob',59)
s.score = 60 #將60 賦給score 1
print(s.score)
# s.score = 1000 #將會觸發異常 2
del s.score
60
score is deleted
從上面可以看出,通過@property裝飾的屬性方法能夠對屬性封裝更多想要的操作
相關文章
- Python - 物件導向程式設計 - 例項方法、靜態方法、類方法Python物件程式設計
- PHP 物件導向 (五)靜態方法PHP物件
- 類的靜態屬性和方法
- 『無為則無心』Python物件導向 — 58、類方法和靜態方法Python物件
- day10_物件導向(屬性丶方法)①物件
- JavaScript 靜態屬性與靜態方法JavaScript
- Python 動態新增例項屬性,例項方法,類屬性,類方法Python
- PHP 物件導向 (二)類屬性PHP物件
- Java類、物件以及(靜態)方法的探討Java物件
- JavaScript學習筆記023-物件方法0包裝物件0靜態屬性JavaScript筆記物件
- [Java物件導向]static方法Java物件
- 理解Python中的類物件、例項物件、屬性、方法Python物件
- python入門基礎(14)--類的屬性、成員方法、靜態方法以及繼承、過載Python繼承
- Python進階之物件導向(類的特殊方法)Python物件
- 【python】物件導向之類成員(屬性)Python物件
- go物件導向方法的呼叫Go物件
- 全網最適合入門的物件導向程式設計教程:14 類和物件的 Python 實現-類的靜態方法和類方法,你分得清嗎?物件程式設計Python
- net 靜態方法與非靜態方法
- PHP物件導向程式設計中獲取物件屬性的3種方法例項分析PHP物件程式設計
- TypeScript 類靜態屬性TypeScript
- 深入理解JavaScript類與物件:揭秘類欄位和靜態屬性的妙用,js靜態屬性和例項屬性JavaScript物件JS
- PHP 物件導向 (六)魔術方法PHP物件
- 1 物件導向的開發方法物件
- 16 ##### 適合靜態方法的場景:方法中不使用物件的值,則直接使用靜態方法物件
- Java的方法靜態方法Java
- 前端筆記之JavaScript物件導向(二)內建建構函式&相關方法|屬性|運算子&繼承&物件導向前端筆記JavaScript物件函式繼承
- 靜態方法
- 14 #### 方法分類與使用場景(繫結、靜態、類方法)
- 章10——物件導向程式設計(高階部分)——類名類方法物件程式設計
- python-物件導向(繫結方法與非繫結方法)Python物件
- 詳解Python物件導向程式設計之類、例項、方法Python物件程式設計
- 靜態域與靜態方法
- JavaScript內建物件屬性及方法大全JavaScript物件
- JavaScript訪問物件的屬性和方法JavaScript物件
- jQuery事件物件event的屬性和方法jQuery事件物件
- Python常見面試題006 類方法、類例項方法、靜態方法有何區別?Python面試題
- Python - 物件導向程式設計 - 類變數、例項變數/類屬性、例項屬性Python物件程式設計變數
- JS物件導向:JS繼承方法總結JS物件繼承
- 17 ### 屬性方法