property classmethod staticmethod的用法
一:property的用法
1,@property 能夠將一個方法偽裝成一個屬性,它并不會讓你的代碼有什么邏輯上的提高,只是從調用者的角度上換了一種方式,使之看起來更合理。調用方法從原來的的對象名.方法名(),變成了對象名.方法名。
class Person:def __init__(self,name,weight,height):self.name = nameself.__height = heightself.__weight = weight@propertydef bmi(self):return self.__weight / self.__height ** 2 p = Person('ads',70,1.75) print(p.bmi) View Code2,方法偽裝成的屬性的修改
class Person:def __init__(self,n):self.__name = n # 私有的屬性了 @propertydef name(self):return self.__name@name.setter # 重要程度 ***def name(self,new_name):if type(new_name) is str:self.__name = new_nameelse:print('您提供的姓名數據類型不合法')p = Person('alex') print(p.name) #def name(self): p.name = 'alex_sb' #def name(self,new_name): print(p.name) #def name(self): View Code3,方法偽裝成的屬性的刪除
class Person:def __init__(self,n):self.__name = n # 私有的屬性了@property # 重要程度 ****def name(self):return self.__name@name.deleterdef name(self):del self.__namep = Person('alex') print(p.name) del p.name View Codeps:
@property --> func 將方法偽裝成屬性,只觀看的事兒
@func.setter --> func 對偽裝的屬性進行賦值的時候調用這個方法 一般情況下用來做修改
@func.deleter --> func 在執行del 對象.func的時候調用這個方法 一般情況下用來做刪除 基本不用
二:classmethod的用法
1,@classmethod ,類方法,可以直接被類調用,不需要默認傳對象參數,只需要傳一個類參數就可以了。
class Goods:__discount = 0.8def __init__(self,name,origin_price):self.name = nameself.__price = origin_price@propertydef price(self):return self.__price * Goods.__discount@classmethoddef change_discount(cls,new_discount):cls.__discount = new_discountGoods.change_discount(1) # 不依賴對象的方法 就應該定義成類方法 類方法可以任意的操作類中的靜態變量 # 如果要改變折扣 是全場的事情 不牽扯到一個具體的物品 所以不應該使用對象來調用這個方法 apple = Goods('apple',5) banana = Goods('banana',8) print(apple.price) print(banana.price) View Code三:staticmethod的用法
當一個方法要使用對象的屬性時 就是用普通的方法
當一個方法要使用類中的靜態屬性時 就是用類方法
當一個方法要既不使用對象的屬性也不使用類中的靜態屬性時,就可以使用staticmethod靜態方法
class Student:def __init__(self,name):pass@staticmethoddef login(a):# login就是一個類中的靜態方法 靜態方法沒有默認參數 就當成普通的函數使用即可user = input('user :')if user == 'alex':print('success')else:print('faild')Student.login(1) View Code?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/leiwei123/p/8874366.html
總結
以上是生活随笔為你收集整理的property classmethod staticmethod的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux20180416四周第一次课(
- 下一篇: react源代码重点难点分析