Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我是否直接向任何python对象添加属性?_Python_Attributes_Object - Fatal编程技术网

为什么可以';我是否直接向任何python对象添加属性?

为什么可以';我是否直接向任何python对象添加属性?,python,attributes,object,Python,Attributes,Object,我有以下代码: >>> class G: ... def __init__(self): ... self.x = 20 ... >>> gg = G() >>> gg.x 20 >>> gg.y = 2000 >>> from datetime import datetime >>> my_obj = datetime.now() >>> my_obj.i

我有以下代码:

>>> class G:
...   def __init__(self):
...     self.x = 20
...
>>> gg = G()
>>> gg.x
20
>>> gg.y = 2000
>>> from datetime import datetime
>>> my_obj = datetime.now()
>>> my_obj.interesting = 1
*** AttributeError: 'datetime.datetime' object has no attribute 'interesting'
该代码:

>>> class G:
...   def __init__(self):
...     self.x = 20
...
>>> gg = G()
>>> gg.x
20
>>> gg.y = 2000
>>> from datetime import datetime
>>> my_obj = datetime.now()
>>> my_obj.interesting = 1
*** AttributeError: 'datetime.datetime' object has no attribute 'interesting'
根据我对Python的了解,我想说
datetime
覆盖了
setattr
/
getattr
,但我不确定。你能在这里说明一下吗


编辑:我对
datetime
不感兴趣。我想知道对象的一般情况。

我的猜测是datetime的实现使用了更好的性能

当使用
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
时,解释器只为列出的属性保留存储空间,而不为其他属性。这提供了更好的性能和更少的存储空间,但也意味着您不能随意添加新属性

阅读更多信息:

它是用C写的


它似乎没有实现setattr。

而问题已经得到了回答;如果有人对解决方案感兴趣,下面是一个例子--


Datetime实际上是用C编写的,它的行为与编写使用插槽的python对象非常相似。插槽是用python编写对象的一种方式,几乎与C版本一样高效,而无需求助于cSo。您可以看到这种行为,因为对象是用C编写的,因为它使用setattr,或者因为插槽:-)“我想知道一般的对象。”什么?您展示了一般类的一般示例,该类通常添加了属性。你的编辑是什么意思?这意味着我对所有的课程都很好奇,不仅仅是datetime。我发布这个问题是因为我看到有些类可以添加属性,而有些类不能。@Geo:有些类是不同的——没有“一般”规则。正如你的问题所指出的,有些类可以,有些类不能。既然你的问题表明没有一般规则,你在问什么?这合法吗?(我的意思是,它没有缺点吗?)