我创建了一个类,其对象使用一堆XML代码进行初始化.该类能够从该XML中提取各种参数,并将它们缓存在对象状态变量中.这些参数的潜在数量很大,很可能用户不需要大部分参数.这就是我决定执行"懒惰"初始化的原因.
在下面的测试用例中,这样的参数是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
Run Code Online (Sandbox Code Playgroud)
这看起来不错,对我来说很好.但是,由于getter函数实际上是一个"setter",因为它对对象有非常显着的副作用,我对此感到不安.这是一个合理的担忧吗?如果是这样,我该如何解决?