此代码有什么问题?
-Dspring.profiles.active=customer
但是上面的代码无法打印任何内容。这是怎么了,有人可以帮我理解吗?我在https://rszalski.github.io/magicmethods/#access
中了解了这些方法答案 0 :(得分:3)
但是上面的代码无法打印任何内容
错了。它以无限递归崩溃。
在__getattribute__
中,当您想记录/拦截该调用时,在某些时候您仍然想要获取用于获取属性的原始方法。并且self.__dict__[name]
会调用__getattribute__
,因此这不是正确的方法。
您尝试的方法再次调用此方法,您将获得无限递归。而是调用父/基方法:
# interceptor to allows me to define rules for whenever an attribute's value is accessed
def __getattribute__(self, name):
return object.__getattribute__(self,name) # or super(Spam,self).__getattribute__(name)
打印:
11
21
Deprecated
None
None
由__getattr__
返回(因为它只是打印到控制台并隐式返回None
)。也许例外是一个更好的主意。