###类的特殊成员方法

###类的特殊成员方法
#__call__ 对象后面加括号,触发执行。
##注:构造方法的执行是由创建对象触发的,即:对象 = 类名():而对于__call__方法的执行是由对象后加括号触发的,即:对象()或者类()()
class Dog (object):
def __init__(self,name,addr):
self.name = name
self.addr = addr
def blak(self):
print("%s 叫声很好听哦。。。"%self.name)
def __call__(self, *args, **kwargs):
print(args,kwargs)
def __str__(self):
return "<obj:%s>"%self.name


dl = Dog("Caicai","22")
dl(1,2,3,4,name="Caicai")

###__dict__查看类或对象中的所有成员
print(Dog.__dict__)###查看类中的所有对象方法
##输出:{'__module__': '__main__', '__init__': <function Dog.__init__ at 0x057F6C90>, 'blak': <function Dog.blak at 0x057F6C48>, '__call__': <function Dog.__call__ at 0x057F6C00>, '__dict__': <attribute '__dict__' of 'Dog' objects>, '__weakref__': <attribute '__weakref__' of 'Dog' objects>, '__doc__': None}
print(dl.__dict__)##获取当前对象的成员
##输出:{'name': 'Caicai', 'addr': '22'}


###__str__如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值。
print(dl)
##输出:<obj:Caicai>

###__getitem__/__setitem__/__delitem__
###用于索引操作/如字典。以上以上分别表示获取、设置、删除数据
class Foo (object):
def __getitem__(self, key):
print("__getitem__",key)
def __setitem__(self,key,value):
print("__setitem__",key,value)
def __delitem__(self, key):
print("__delitem__",key)

obi = Foo()










猜你喜欢

转载自www.cnblogs.com/ArtisticMonk/p/8984277.html
今日推荐