几个月来一直是读者,但这是我的第一篇文章(对改进帖子的反馈持开放态度)。我已经完成了Python和OOP的基础知识,并希望更好地理解内存:
class Foo(): pass
class Bar():
def __repr__(self):
standard_ouput = f'<{__name__}.{type(self).__name__} object at {hex(id(self))}> (override)'
return standard_ouput
f = Foo()
b = Bar()
print(Foo())
print(f)
print(Bar())
print(b)
上面的代码输出了一些变体:
<__main__.Foo object at 0x1079973c8>
<__main__.Foo object at 0x107997358>
<__main__.Bar object at 0x1079973c8> (override)
<__main__.Bar object at 0x107997400> (override)
1)。为什么Foo()
和Bar()
都指向相同的内存地址?这是否与覆盖__repr__
的{{1}}方法有关?
2)。我上面提到Q1的方式是否有意义(试图在CS术语上做得更好)?