python学习第二十三章

主要内容:

1.特殊方法

2.设计模式:单例模式

1.特殊方法

isinstance  判断obj1是否是B这个类实例化来的,或者是B这个类的父类实例化来的.是的话,返回true,不是返回False

isinstance(obj1,B)

issubclass 判断一个类是否是另一个类的派生类.

print(issubclass(B,A))  如果B类是A类派生来的话,那么就是Ture.

扫描二维码关注公众号,回复: 1873559 查看本文章

__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()

猜你喜欢

转载自www.cnblogs.com/ahliucong/p/9265436.html