python循环调用的思考

  

 

 

 

 

 

    

 

 

class Oar:
    def __init__(self,oar):
        self.o=oar

    def print(self):
        print(self.o) # print 不会到class Oar下面找,除非引用self.print

def decorator(cls):
    def _print(self): # 当使用print时,覆盖了built-in的print,print内的print会到上一级寻找print,循环调用了自身
        # 使用格式化字符串format时,因为循环调用下一次的self被format成了str
        print('content: {}'.format(self.o))
        # return self
        # print(self) # 覆盖print后,print只能接收一个parameter
    cls.print=_print
    return cls

@decorator
class InheritOar(Oar):pass

i=InheritOar('uiop')
print(InheritOar.__dict__)
print(i.print())

  

 

 

posted @ 2020-10-04 13:36  ascertain  阅读(385)  评论(0编辑  收藏  举报