python面度對象(屬性,類方法,靜態方法)
阿新 • • 發佈:2018-07-27
名稱 空間 一個 用法 python clas fun span self.
一. 屬性
所謂的屬性,就是將一個類中的方法偽裝成一個屬性.在代碼的級別是沒有任何本質上的提升.但是讓代碼看起來更順眼.
class Person: def __init__(self,name,age): self.name = name if type(age) is int: self.__age = age else: print( ‘你輸入的年齡的類型有誤,請輸入數字‘) @property #屬性的查看. 裝飾器的用法 def age(self):return self.__age @age.setter #屬性的修改 def age(self,a1): ‘‘‘判斷,你修改的年齡必須是數字‘‘‘ if type(a1) is int: self.__age = a1 else: print(‘你輸入的年齡的類型有誤,請輸入數字‘) @age.deleter #屬性的刪除 def age(self): del self.__age p1 = Person(‘帥哥‘,20) print(p1.age) p1.age = 23 #看上去更像是對某一個屬性進行操作 print(p1.age) del p1.age print(p1.__dict__)
二. 類方法
類方法:通過類名調用的方法,類方法中第一個參數約定俗成為cls, python自動將類名(類空間)傳給cls.
class A: def func(self): # 普通方法 print(self) @classmethod # 類方法 def func1(cls): print(cls) a1 = A() a1.func() A.func(a1) A.func1() a1= A() a1.func1() # 對象調用類方法,cls 得到的是類本身.
類方法的使用場景:
1. 類中有些方法不需要對象的參與時
class A: name = ‘ale‘ count = 1 @classmethod def func1(cls): # 此方法無需對象參與 return cls.name + str(cls.count + 1) a1 = A() print(a1.func1()) print(A.func1())
2.對類中的靜態變量進行改變.
3.繼承中,父類得到子類的類空間.
也可以不通過類方法,讓父類中的某個方法得到子類空間的任意值
class A: age = 12 def func2(self): print(self) # self 子類的對象,能得到子類 空間的任意值 class B(A): age = 22 b1 = B() b1.func2()
三. 靜態方法
靜態方法是類中的函數,不需要實例。靜態方法主要是用來存放邏輯性的代碼,主要是一些邏輯屬於類,但是和類本身沒有交互,即在靜態方法中,不會涉及到類中的方法和屬性的操作。可以理解為將靜態方法存在此類的名稱空間中。事實上,在python引入靜態方法之前,通常是在全局名稱空間中創建函數
@staticmethod 裝飾靜態方法
好處:
代碼塊清晰
提高復用性
python面度對象(屬性,類方法,靜態方法)