1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
'test __getattr[ibute]__ returning None'
class A:
'no warning'
def __getattr__(self, attr):
return attr
class B:
'no warning'
def __getattribute__(self, attr):
return attr
class C:
'warning'
def __getattr__(self, attr):
pass
class D:
'warning'
def __getattribute__(self, attr):
pass
class E:
'warning'
def __getattr__(self, attr):
if attr == 'n':
return attr
if attr != 'j':
raise AttributeError
class F:
'no warning'
def __getattr__(self, attr):
if attr == 'n':
return attr
raise AttributeError
class G:
'should not gen a warning'
def __getattr__(self, name):
return getattr(self, 'a')[name]
|