您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關python中類如何使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
類的成員包括:屬性和方法。
屬性可以分為:靜態屬性和實例屬性
方法可以分為:普通方法、類方法和靜態方法。
屬性可以分為:靜態屬性和實例屬性。
實例屬性屬于對象,而靜態屬性屬于類。
通過類創建對象時,如果每個對象都具有相同的屬性,那么就使用靜態屬性。
靜態屬性是屬于類的,所以不用創建對象訪問。
class Province: # 靜態字段 country = '中國' # 直接訪問靜態字段 Province.country
例如:
lass Goods: def __init__(self): # 原價 self.original_price = 100 # 折扣 self.discount = 0.8 @property def price(self): # 實際價格 = 原價 * 折扣 new_price = self.original_price * self.discount return new_price @price.setter def price(self, value): self.original_price = value @price.deleter def price(self): del self.original_price
例如:
實例屬性可以在構造方法中進行初始化。@property裝飾器可以把一個實例方法變成其同名屬性,以支持.號訪問。我們可以根據屬性的訪問特點,分別將三個方法定義為對同一個屬性:獲取、修改、刪除。
擴展:
對于靜態屬性還可以使用property函數的形式定義一個屬性。與@property實現原理類似。
property(fget=None, fset=None, fdel=None, doc=None)
class Foo: def get_bar(self): return 'get_bar' # *必須兩個參數 def set_bar(self, value): return 'set value' + value def del_bar(self): return 'del_bar' age = property(fget=get_bar,fset=set_bar,fdel=del_bar,doc='description...')
例如:
方法包括:普通方法、類方法和靜態方法。
普通方法:由對象調用;至少一個self參數;執行普通方法時,自動將調用該方法的對象賦值給self;
類方法:由類調用; 至少一個cls參數;執行類方法時,自動將調用該方法的類復制給cls;
靜態方法:由類調用;無默認參數;
class Foo: def __init__(self, name): self.name = name def ord_func(self): """ 定義普通方法,至少有一個self參數 """ # print self.name print('普通方法') @classmethod def class_func(cls): """ 定義類方法,至少有一個cls參數 """ print('類方法') @staticmethod def static_func(): """ 定義靜態方法 ,無默認參數""" print('靜態方法')
例如:
如果Python中沒有屬性,方法完全可以代替其功能。
對于每一個類的成員而言都有兩種形式:
公有成員,在任何地方都能訪問。
私有成員,只有在類的內部才能方法。
私有成員和公有成員的定義不同:私有成員命名時,前兩個字符是下劃線。(特殊成員除外,例如:__init__、__call__、__dict__等)
ps:如果想要強制訪問私有字段,可以通過 【對象._類名__私有字段明 】訪問(如:obj._C__foo),不建議強制訪問私有成員。
class C: name = '公有靜態字段' __sname ='私有靜態字段' def pub_func(self): print(C.name) def pra_func(self): print(C._sname) class D(C): def pub_show(self): print(C.name) def pra_show(self): print(C._sname)
例如:
注:不建議強制訪問私有成員。
表示類的描述信息。
>>> class Foo: """ 描述類信息,這是用于看片的神奇 """ def func(self): pass >>> Foo.__doc__ ' 描述類信息,這是用于看片的神奇
__module__ 表示當前操作的對象在哪個模塊
__class__ 表示當前操作的對象的類是什么
>>> class Foo: """ 描述類信息,這是用于看片的神奇 """ def func(self): pass >>> obj = Foo() >>> obj.__module__ '__main__' >>> obj.__class__ <class '__main__.Foo'>
構造方法,通過類創建對象時,自動觸發執行。
>>> class Foo: def __init__(self, name): self.name = name self.age = 18 >>> obj = Foo('test') >>> obj.name 'test'
當對象在內存中被釋放時,自動觸發執行。
對象后面加括號,觸發執行。
>>> class Foo: def __init__(self): pass def __call__(self, *args, **kwargs): print('__call__') >>> obj = Foo() >>> obj() __call__
類或對象中的所有成員。
>>> class Province: country = 'China' def __init__(self, name, count): self.name = name self.count = count def func(self, *args, **kwargs): print('func') >>> print(Province.__dict__) # 獲取類的成員,即:靜態字段、方法 {'__module__': '__main__', 'country': 'China', '__init__': <function Province.__init__ at 0x0000000002F39820>, 'func': <function Province.func at 0x0000000002F398B0>, '__dict__': <attribute '__dict__' of 'Province' objects>, '__weakref__': <attribute '__weakref__' of 'Province' objects>, '__doc__': None} >>> obj1 = Province('jiangxi',10000) >>> print(obj1.__dict__) #獲取 對象obj1 的成員 {'name': 'jiangxi', 'count': 10000}
如果一個類中定義了__str__方法,那么在打印 對象 時,默認輸出該方法的返回值。有點像java中的toString方法。
>>> class Foo: def __str__(self): return 'test' >>> obj = Foo() >>> print(obj) test
用于索引操作,如字典。以上分別表示獲取、設置、刪除數據。
三個方法用于分片操作。
用于迭代器,之所以列表、字典、元組可以進行for循環,是因為類型內部定義了 __iter__。
>>> class Foo(object): def __init__(self, sq): self.sq = sq def __iter__(self): return iter(self.sq) >>> for i in obj: print(i) 11 22 33 44 >>>
上述就是小編為大家分享的python中類如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。