3 回答
TA贡献1809条经验 获得超8个赞
__dict__
object
__dict__
dict
object
pympler
>>> from pympler import asizeof>>> asizeof.asizeof({})144>>> asizeof.asizeof(23)16
int
>>> class dint(int): pass... >>> asizeof.asizeof(dint(23))184
__dict__
是dint
int
foobar
>>> class fint(int):... __slots__ = 'foobar',... def __init__(self, x): self.foobar=x+100... >>> asizeof.asizeof(fint(23))80
int
int
self
self.foobar
dint
.
__slots__
class
type
__dict__
TA贡献1875条经验 获得超3个赞
object
__dict__
. object
int
str
object
__dict__
types.SimpleNamespace
TA贡献1776条经验 获得超12个赞
因此,在研究我自己的问题时,我发现了关于Python语言的以下内容:您可以继承int这样的东西,您可以看到相同的行为:
>>> class MyInt(int):
pass
>>> x = MyInt()
>>> print x
0
>>> x.hello = 4
>>> print x.hello
4
>>> x = x + 1
>>> print x
1
>>> print x.hello
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
AttributeError: 'int' object has no attribute 'hello'
我假设最后的错误是因为add函数返回一个int,所以我必须重写以下函数__add__这样才能保留我的自定义属性。但是,当我想到像“int”这样的“对象”时,这一切对我来说都是有意义的。
添加回答
举报