1. 程式人生 > >__call__ && __setitem__ && __getitem__ && __delitem__&&__new__的用法

__call__ && __setitem__ && __getitem__ && __delitem__&&__new__的用法

在類中設定物件獲取物件刪除物件相當於字典操作

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")

**

  1. new
    test

**