gpt4 book ai didi

python - 有副作用的 setter/getter

转载 作者:太空狗 更新时间:2023-10-29 17:29:01 25 4
gpt4 key购买 nike

我创建了一个类,其对象初始化为一堆 XML 代码。该类能够从该 X​​ML 中提取各种参数并将它们缓存在对象状态变量中。这些参数的潜在数量很大,用户很可能不需要其中的大部分参数。这就是我决定执行“惰性”初始化的原因。

在下面的测试用例中,这样的参数是title。当用户第一次尝试访问它时,getter 函数解析 XML,正确初始化状态变量并返回其值:

class MyClass(object):     
def __init__(self, xml=None):
self.xml = xml
self.title = None

def get_title(self):
if self.__title is None:
self.__title = self.__title_from_xml()
return self.__title

def set_title(self, value):
self.__title = value

title = property(get_title, set_title, None, "Citation title")

def __title_from_xml(self):
#parse the XML and return the title
return title

这看起来不错,对我来说效果很好。但是,getter 函数实际上是一个“setter”函数,因为它对对象有非常显着的副作用,这让我有点不安。这是一个合理的担忧吗?如果是,我该如何解决?

最佳答案

这个设计模式叫做Lazy initialization并且它有合法用途。

关于python - 有副作用的 setter/getter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4739597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com