理解python中的__str__, __call__, __init__, __getattr__

来源:互联网 发布:淘宝店铺如何更换行业 编辑:程序博客网 时间:2024/05/29 03:57


解释

__getattr__:当调用不存在的属性时访问这个方法
__str__:对象打印出来的字符串(返回用户看到的)
__repr__:对象打印出来的字符串(返回开发者看到的)
__call__:如果类实现了这个方法,相当于把这个类型的对象当作函数来使用,相当于 重载了括号运算符
实例:
class MyClass(object):    def __call__(self, num):        print("in __call__: %s", num)    def __init__(self, num):        self.num = num     def __str__(self):        print("in __str__")        return "test"    def __repr__(self):        print("in __repr__")        return "test2"a = MyClass(4)print aprint a(75)a(80)

运行结果


__init__
__getitem__:对象像list那样按照下标取出元素(注意:如若需要使用切片等方法需要自己实现)

实例

import sys, osclass UrlChain(object):    def __init__(self, path=''):        print("in __init__")        self._path = path    def __getattr__(self, guan):        print("in __getattr__")        print("in __getattr__: %s" % guan)        return UrlChain('%s/%s' % (self._path, guan))    def __str__(self):        print("in __str__")        return self._path    def __call__(self, index):        print("in __call__")        return UrlChain('%s/%s' % (self._path, index))class CephManager(object):    base_url = UrlChain('v1')        def func1(self):        print self.base_url.clusters('JeffreyGuan')cm = CephManager()cm.func1()

运行结果




0 0
原创粉丝点击