類的內置方法
阿新 • • 發佈:2018-11-26
字符串 spa 賦值 brush .py clas 內容 getitem ict
isinistance(obj, cls)
檢查obj是否是類cls的對象
class Foo(object): pass obj = Foo() print(isinstance(obj, Foo))
issubclass(sub,super)
檢查sub類是否是super類的派生類
class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo))
__setitem__,__getitem__,__delitem__
把對象模擬成像字典對象操作一樣的類型
__getitem__ 查看屬性
class Foo: def __init__(self, name): self.name = name def __getitem__(self, item): # item = "name" 通過字符串訪問屬性 # print("getitem...") # print(item) return self.__dict__.get(item) obj = Foo("alex") # print(obj.__dict__) # obj.屬性 obj["name"] #按照這種形式取值
__setitem__ 設置屬性
class Foo: def __init__(self, name): self.name = name def __setitem__(self, key, value): # 設置值 # print("setitem...") # print(key, value) self.__dict__[key]=value obj = Foo("alex") # print(obj.__dict__) # obj.sex = "male" # 以前設值(賦值) obj["sex"] = "male" print(obj.__dict__) print(obj.sex)
__delitem__ 刪除屬性
class Foo: def __init__(self, name): self.name = name def __delitem__(self, key): # 刪除屬性 # print("delitem..") # print(key) # self.__dict__.pop(key) del self.__dict__[key] obj = Foo("alex") # print(obj.__dict__) print(obj.__dict__) # del obj.name del obj["name"] print(obj.__dict__)
__str__,__repr,__format__
d = {"name": "egon"} # 本質上是dict類的實例 # d = dict({"name": "egon"}) # print(isinstance(d, dict)) print(d) #{‘name‘: ‘egon‘} class Foo: pass obj = Foo() print(obj) #<__main__.Foo object at 0x000001E4EF704B00>
本質是d和obj都是類的實例,但是打印的結果不一樣
__str__方法
在打印時觸發,把返回值以字符串的形式,作為打印的內容
# __str__方法(一定要返回字符串類型)(打印對象的時候會觸發該方法的執行) class People: def __init__(self, name, age): self.name = name self.age = age def __str__(self): # 在打印時觸發,把返回值以字符串的形式,作為打印的內容 # print("----->str") return "<name:%s,age:%s>" % (self.name, self.age) obj = People("alex", 20) print(obj) # print(obj.__str__())
__del__ 回收資源
在對象刪除的時候會自動先觸發該功能
# __del__ 回收資源(綁定給對象的) 在對象刪除的時候會自動先觸發該功能 # f = open("a.text") # 在應用程序中拿到的是單純的f,在操作系統中實際上是打開了一個文件 # f.read() # 應用程序對操作系統的調用 # f.close() # 回收操作系統資源 f 還是存在 class Open: def __init__(self,filename): print("open file.....") self.filename = filename def __del__(self): print("回收操作系統資源:self.close()") f = Open("start.py") del f # f.__del__() 手動 print("-------main-----") # f.__del__() 自動 程序結束python會自動回收掉f(del f),遺留下了操作系統資源。__del__回收操作系統資源
類的內置方法