在 Python 中,为啥我不能为 str 类设置属性? [复制]
Posted
技术标签:
【中文标题】在 Python 中,为啥我不能为 str 类设置属性? [复制]【英文标题】:In Python, Why can't i set attributes to the str class? [duplicate]在 Python 中,为什么我不能为 str 类设置属性? [复制] 【发布时间】:2021-11-24 05:11:09 【问题描述】:class Sample:
pass
sample = Sample()
sample.a = "magic"
print(sample.a)
在上面的代码中,我创建了一个空的class
Sample
,并且能够在class
定义之外添加一个attribute
。尝试对str
的instance
做同样的事情,但我遇到了AttributeError: 'str' object has no attribute 'a'
。为什么我不能对str
的instance
做同样的事情。这与str
是primitive
类型有什么关系吗?
sample_string = ""
sample_string.a = "magic"
print(sample_string.a)
【问题讨论】:
【参考方案1】:python 中的大多数内置类不允许您分配任意属性。你可以在很多子类的基础上创建自己的子类(例如 list 和 dict),然后这样做。
str 有点特殊,因为它具有不可变的性质——本质上,python 可以通过始终使用同一个字符串来避免为同一个字符串提供多个缓冲区。但是,您仍然可以通过覆盖 new 而不是 init 来继承它: How to subclass str in Python
【讨论】:
以上是关于在 Python 中,为啥我不能为 str 类设置属性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章