栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

可以设置Python对象的任何属性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

可以设置Python对象的任何属性

object
类型是用C编写的内置类,不允许您向其添加属性。它已被明确编码以防止出现这种情况。

在您自己的类中获得相同行为的最简单方法是使用

__slots__
属性来定义要支持的确切属性的列表。Python将仅为那些属性保留空间,而不允许其他任何属性。

class c(object):    __slots__ = "foo", "bar", "baz"a = c()a.foo = 3  # worksa.b   = 3  # AttributeError

当然,这种方法有一些注意事项:您不能腌制此类对象,并且期望每个对象都具有

__dict__
属性的代码都将破坏。一种“更具Python风格”的方法是使用
__setattr__()
另一个海报所示的自定义。当然,有很多方法可以解决此问题,而没有办法设置
__slots__
(除了子类化和将属性添加到子类之外)。

通常,这不是您实际上应该在Python中要做的事情。如果您的类的用户想要在类的实例上存储一些额外的属性,则没有理由不让他们使用,实际上有很多原因您可能想要这么做。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611764.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号