So che questo codice è corretto:Qual è la relazione tra __getattr__ e getattr?
class A:
def __init__(self):
self.a = 'a'
def method(self):
print "method print"
a = A()
print getattr(a, 'a', 'default')
print getattr(a, 'b', 'default')
print getattr(a, 'method', 'default')
getattr(a, 'method', 'default')()
e questo è sbagliato:
# will __getattr__ affect the getattr?
class a(object):
def __getattr__(self,name):
return 'xxx'
print getattr(a)
Anche questo è sbagliato:
a={'aa':'aaaa'}
print getattr(a,'aa')
Dove dovremmo usare queste funzioni (__getattr__
e getattr
)?
possibile duplicato di [Capire la differenza tra \ _ \ _ getattr \ _ \ _ e \ _ \ _ getattribute \ _ \ _] (http://stackoverflow.com/questions/4295678/understanding-the-difference-tra- getattr-and-getattribute) – Trilarion
@Trilarion che non è un duplicato corretto per questa domanda –