目录:
- isinstance和issubclass
- 反射
- getattr
- hasattr
- setattr
- delattr
- __str__和__repr__
- __del__
- item系列:
- __getitem__
- __delitem__
- __setitem__
- __new__(单例设计模式)
- __call__
- __len__
- __hash__
- __eq__
isinstance和issubclass
isinstance(obj, cls):返回True和False 判断obj是否属于cls这个类。
class A:
a = 'dddd'
def __init__(self, name, age):
self.name = name
self.age = age
class B(A):
pass
a = B('我是a', 'none')
print(isinstance(a, B))
print(isinstance(a, A))
输出结果:
True
True
可以看到子类实例化的对象也是属于父类的
issubclass(sub, super)检查sub类是否是 super 类的派生类
class Foo(object):
pass
class Bar(Foo):
pass
issubclass(Bar, Foo)
输出结果为:
True
object是所有类的父类
反射
python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)
四个可以实现自省的函数
class A:
a = 'dddd'
def __init__(self, name, age):
self.name = name
self.age = age
def tell(self):
print('telling')
'判断是否有该属性'
print(hasattr(A, 'tell'))
a = A('我是a', 'none'