1. 程式人生 > >python學習第二十三章

python學習第二十三章

深入 一段時間 格式化 ron 似的 iss python 代碼 str

主要內容:

1.特殊方法

2.設計模式:單例模式

1.特殊方法

isinstance 判斷obj1是否是B這個類實例化來的,或者是B這個類的父類實例化來的.是的話,返回true,不是返回False

isinstance(obj1,B)

issubclass 判斷一個類是否是另一個類的派生類.

print(issubclass(B,A)) 如果B類是A類派生來的話,那麽就是Ture.

__len__, __hash__ __str__ __repr__

len(a1 )如果對一個對象進行len()操作, 他會找到對象從屬於的類中的__len__方法,並且此方法中必須要有數字的返回值.

__hash__方法也有類似的效果.

示例:

class A:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __len__(self):
        return len(self.__dict__)

a1 = A(oldboy,1000)
print(len(a1))

__str__方法

# print(a) # 打印對象,就會觸發類中__str__方法
# str(a) # str(a),就會觸發類中__str__方法
# print(‘打印此類對象:%s‘ % a) # 格式化輸出 ‘%s‘a

repr也是類似的方法

__call__ 方法

對象() 自動執行類中的__call__方法

示例:

class A:
    def __init__(self):
        pass
    def func(self):
        print(111)

    def __call__(self, *args, **kwargs):
        ‘‘‘各種代碼‘‘‘
        # print(666)
        print(args)
        return wusir
a1 = A()
print(a1(1,2,3))

__eq__方法

對一個類實例化的兩個對象進行比較運算的時候,他會自動觸發類中的__eq__

class A:
    def __init__(self):
        self.a = 1
        self.b = 2

    def __eq__(self,obj):
        if  self.a == obj.a and self.b == obj.b:
            return True
a1 = A()
b1 = A()
print(a1 == b1)

__del__ 析構方法

python垃圾回收機制
文件中你創建的所有的變量,類等等.執行完畢之後,
一段時間內如果沒有用到, 他會自動在內存中去除.
深入研究: 他會將你的所有變量,類等等做個標記,在一段時間之內,沒有被調用,則就會自動回收.

class A:
    def __init__(self):
        pass
    def __del__(self):
        print(666)
a1 = A()

python學習第二十三章