python学习第二十三章
Posted auxiaoliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习第二十三章相关的知识,希望对你有一定的参考价值。
主要内容:
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学习第二十三章的主要内容,如果未能解决你的问题,请参考以下文章