Apr 17, 2024 21:44
What do you think this does:
class A(object):
def aa(self):
return 'A1'
class A(object):
def aa(self):
return 'A2'
a = A()
print("%s" % a.aa())
It prints "A2".
But before you think "what's the big deal, the __dict__ of A is getting updated", how about this:
class A(object):
def aa(self):
return 'A1'
class A(object):
def bb(self):
return 'A2'
a = A()
print("%s" % a.aa())
This fails with "AttributeError: 'A' object has no attribute 'aa'".
Apparently, the latter definition replaces the former completely. This is darkly amusing.
Python 3.12.2