__call__ && __setitem__ && __getitem__ && __delitem__&&__new__的用法
阿新 • • 發佈:2019-01-10
在類中設定物件獲取物件刪除物件相當於字典操作
class Foo:
def __init__(self):
self.__data = {}
def talk(self):
print("test")
def __call__(self, *args, **kwargs):
print("running",args,kwargs)
def __setitem__(self, key, value):
self.__data[key] = value
def __getitem__(self, item) :
return self.__data.get(item)
def __delitem__(self, key):
del self.__data[key]
c = Foo()
c.talk()
c(1,2,3,name="demo",age=20)
print(Foo.__dict__)
c.__setitem__('name','Dog')
print(c.__getitem__('name'))
c['name'] = "cat"
print(c.__getitem__('name'))
class Mytype(type):
def __init__(self,what,bass=None,dict=None):
super(Mytype,self).__init__(what,bass,dict)
def __call__(self, *args, **kwargs):
self.__init__(self,args,kwargs)
class Foo(object):
def __init__(self,name):
self.__name = name
print("%s"%(self.__name))
def __new__(cls, *args, **kwargs) :
print("new")
return object.__new__(cls)
f = Foo("test")
**
- new
test
**