[Python] मैं डिफ़ॉल्ट व्यवहार को तोड़ने के बिना पायथन में __getattr__ को ओवरराइड कैसे करूं?


Answers

class A(object):
  def __init__(self):
    self.a = 42

  def __getattr__(self, attr):
    if attr in ["b", "c"]:
      return 42
    raise AttributeError("%r object has no attribute %r" %
                         (self.__class__, attr))
    # exception text copied from Python2.6
>>> a = A()
>>> a.a
42
>>> a.b
42
>>> a.missing
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 8, in __getattr__
AttributeError: 'A' object has no attribute 'missing'
>>> hasattr(a, "b")
True
>>> hasattr(a, "missing")
False
Question

मैं कुछ फैंसी करने के लिए कक्षा में __getattr__ विधि को ओवरराइड करना चाहता हूं लेकिन मैं डिफ़ॉल्ट व्यवहार को तोड़ना नहीं चाहता हूं।

ऐसा करने का सही तरीका क्या है?






Links