类成员
字段
方法
属性
普通属性
普通方法的变种,定义普通方法时加上@property装饰器
相关方法
isinstance(object,classinfo)和issubclass(class,classinfo)
isinstance用于判断object是否是classinfo、或classinfo直接、间接的子类的实例(instance),返回值为bool类型
classinfo可以是一个包含多个类的元组,只要object按照上面的规则符合其中一个就会返回True
issubclass用于判断class是否是classinfo、或classinfo直接、间接的子类,返回值为布尔类型
class A:
pass
class B(A):
pass
class C(B):
pass
class D:
pass
x = C()
# x是C的直接的实例
print(isinstance(x, C))
# x是B的间接的实例
print(isinstance(x, B))
# x不是D的实例
print(isinstance(x, D))
# classinfo可以是一个元组
print(isinstance(x, (A, D)))
# C是B的直接子类
print(issubclass(C, B))
# C是A的间接子类
print(issubclass(C, A))
# C不是D的子类
print(issubclass(C, D))
内置方法
__new__
当类开始实例化出对象时执行该方法
正常的实例化由object类的__new__执行该方法,并返回一个对象
通常使用该方法在实例化出对象时额外进行一些操作,然后返回object类的__new__
class A:
def __init__(self):
print(‘in init function‘)
self.x = 1
def __new__(cls, *args, **kwargs):
print(‘in new function‘)
return object.__new__(A, *args, **kwargs)
单例模式:
一个类仅有一个对象。
class Singleton:
def __new__(cls, *args, **kw):
if not hasattr(cls, ‘_instance‘):
cls._instance = object.__new__(cls, *args, **kw)
return cls._instance
one = Singleton()
two = Singleton()
three = Singleton()
print(one,two,three)
__init__
执行__new__之后执行该方法
__str__和__repr__
当打印对象时,会打印str的返回值
当str方法不存在,repr会代替str
__del__
当对象被del的时候执行方法
item系列 getitem用在从对象取值的时候使用方法内的返回值,setitem用于给对象的属性赋值操作,delitem用于删除对象的属性
__getitem__
__setitem__
__delitem__
class Foo:
def __init__(self):
self.name = ‘jack‘
self.age = 24
def __getitem__(self, item):
return self.__dict__[item]
def __setitem__(self, key, value):
self.__dict__[key] = value
def __delitem__(self, key):
del self.__dict__[key]
f = Foo()
print(f[‘name‘])
f[‘name‘] = ‘bob‘
del f[‘name‘]
__call__
定义在将对象当做函数调用时执行的方法
__len__
定义在对对象使用len函数时执行的方法
__hash__
定义在对对象使用hash函数时执行的方法
__eq__
定义在对两个对象使用==运算符时执行的方法
__add__
定义在对象相加时执行的方法
__mul__
定义在对象相乘时执行的方法
__setattr__
__getattr__
__delattr__
flask源码、请求上下文管理的类似本地线程功能
比本地线程更厉害,因为可以保证协程级别的数据不混淆
__enter__
上下文协议入口,需要返回值
__exit__
上下文协议出口
属于对象,存储在对象空间
使用self.字段名操作
原文:https://www.cnblogs.com/leiyiming/p/9194643.html