![]()
1、python特殊的双下方法
双下方法不是提供给你用的,他是给python源码的开发者用的
isinstance 判断此对象是不是该类(或者是该类的子类)实例化的对象
# len(对象) 如果此类中有__len__ 就_方法会自动执行__len_
class A:
def __init__(self,name,age):
self.name = name
self.age = age
self.sex = '男'
def __len__(self):
# print(666)
return len(self.__dict__)
a = A('barry', 18)
len(a)
2、单例模式
class A:
__instance = None # 为了防止外面改而导致无法创建
def __init__(self,name,age):
self.name =name
self.age = age
def __new__(cls, *args, **kwargs):
if cls.__instance is None:
obj = object.__new__(cls)
cls.__instance = obj
return cls.__instance
3、实例化对象, 类,其他py文件 本py文件
反射:通过字符串去操作对象(类,空间等等)的属性或方法
hasattr getattr setattr delattr
class A:
country = 'China'
area = '深圳'
def __init__(self,name,age):
self.name = name
self.age = age
def func(self):
print(666)
obj = A('忠敏',18)
print(obj.name)
# 找有没有,有则True,无则False
print(hasattr(obj,'name'))
# 有则运行,无则返回None,没有找到且不写None则报错
print(getattr(obj,'sex',None))
setattr(obj,'sex','男') # 设置
delattr(obj,'name') # 删除