类的特殊成员

class Foo:
def __new__(cls, *args, **kwargs):
print('先执行的是我,创建空对象')
return object.__new__(cls)
def __init__(self,a,b):
print('我是第二步,初始化数据')
self.a=a
self.b=b
def __call__(self, *args, **kwargs):
return args,kwargs
def __getitem__(self, item):
return item
def __setitem__(self, key, value):
print(key,value)
def __delitem__(self, key):
print(key)
def __add__(self, other):
return self.a+other.b
def __enter__(self):
print('hollo')
def __exit__(self, exc_type, exc_val, exc_tb):
print('get out')
def __iter__(self):
return [1,2,3,4,5] #返回迭代器
# def __iter__(self):
# yield 1 #也可以返回一个生成器
# yield 2
obj=Foo(1,100) #创建
print(obj.__dict__) #以字典的形式获取对象init方法封装的数据
print(obj(1,2,3,lyd=1000000))
print(obj[666])
obj[666]='very_good'
del obj[666]
obj2=Foo(-1,-100)
print(obj+obj2)
with obj as f: #语法像with open
print('我轻轻的走来')
print('不带走一片云彩')
for item in obj:
print(item)

 

posted @ 2018-08-30 08:51  amberLIU  阅读(175)  评论(0)    收藏  举报