簡體   English   中英

在__getattr__中使用__dict__屬性

[英]Using the __dict__ attribute in __getattr__

這是帶有自定義__getattr__實現的簡單類:

class Wrapper(object):
    def __init__(self, obj):
        self.obj = obj

    def __getattr__(self, name):
        func = getattr(self.__dict__['obj'], name)
        if callable(func):
            def my_wrapper(*args, **kwargs):
                print "entering"
                ret = func(*args, **kwargs)
                print "exiting"
                return ret
            return my_wrapper
        else:
            return func

我在這里不明白的是為什么要使用getattr(self.__dict__['obj'], name)代替更簡潔的getattr(self.obj, name)

因為據我所知self.__dict__['obj']所做的是調用self.obj的值。 可能與向后兼容有關嗎?

我相信,此代碼存在的原因–作者試圖逃避無限遞歸循環–不通過self.obj觸發__getattr__

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM