如何在python中使类不可变?

如何在python中使类不可变?,第1张

概述参见英文答案 > How to make an immutable object in Python?                                    21个 我在这里已经阅读了很多关于这个主题但我仍然找不到合适的答案. 我有一个类: class A(object): def __init__(self, first, second): self.f 参见英文答案 > How to make an immutable object in Python?                                    21个
我在这里已经阅读了很多关于这个主题但我仍然找不到合适的答案.
我有一个类:

class A(object):    def __init__(self,first,second):        self.first = first        self.second = second    def __eq__(self,other):        return ****    def __str__(self):        return *****    def __repr__(self):        return **** a = A("a","b")

我怎么能禁止a.first =“c”呢?

解决方法 您可以覆盖__setattr__以阻止任何更改:

def __setattr__(self,name,value):    raise AttributeError('''Can't set attribute "{0}"'''.format(name))

或阻止添加新属性:

def __setattr__(self,value):    if not hasattr(self,name):        raise AttributeError('''Can't set attribute "{0}"'''.format(name))    # Or whatever the base class is,if not object.    # You can use super(),if appropriate.    object.__setattr__(self,value)

您还可以使用针对允许属性列表的检查来替换hasattr:

if name not in List_of_allowed_attributes_to_change:    raise AttributeError('''Can't set attribute "{0}"'''.format(name))

另一种方法是使用属性而不是普通属性:

class A(object):    def __init__(self,second):        self._first = first        self._second = second    @property    def first(self):        return self._first    @property    def second(self):        return self._second
总结

以上是内存溢出为你收集整理的如何在python中使类不可变?全部内容,希望文章能够帮你解决如何在python中使类不可变?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存