1. 程式人生 > >類的內置方法

類的內置方法

字符串 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__回收操作系統資源

  









類的內置方法