少說話多寫程式碼之Python學習050——類的成員(靜態方法,類成員方法,getattr,setattr)
我們在訪問類的欄位時,還有一些過濾的條件,類似於前端語言比如vue Js、anjularJs中過濾器的概念。在3.0以前可以使用比如,__setattr__,__getattr__的方法進行屬性的過濾。在3.0以後我們如果對某些欄位需要過濾訪問,也可以使用這些函式。
class Rectangle2: def __init__(self): self.width=0 self.height=0 def __setattr__(self, key, value): if key=='size': self.width,self.height=value else: self.__dict__[key]=value def __getattr__(self, name): if name=='size': returnself.width,self.height else: raise AttributeError r=Rectangle2() r.__setattr__('no',(100,61.8)) print(r.width,r.height) r.__setattr__('size',(100,61.8)) print(r.width,r.height) #r.__getattr__('no') print(r.__getattr__('size'))
輸出
0 0 100 61.8 (100, 61.8)
Python中靜態方法和類的成員方法,使用不太廣泛,可以瞭解一下。一般還是使用函式和繫結方法。
_metaclass_ =type class MyClass: @staticmethod def smeth(): print('靜態方法') @classmethod def cmeth(cls): print('類的方法',cls) MyClass.smeth() MyClass.cmeth()
輸出
靜態方法 類的方法 <class '__main__.MyClass'>
工程程式碼下載:ofollow,noindex" target="_blank">https://download.csdn.net/download/yysyangyangyangshan/10806872