def __getattr__(self, name):
if name.startswith(self.factory_method_prefix):
raise AttributeError(name)
factory = self.get_factory_method_for(name)
if inspect.isgeneratorfunction(factory):
with self.wrapped_attribute_error():
generator = factory()
instance = next(generator)
self.attribute_generators.append(generator)
else:
with self.wrapped_attribute_error():
instance = factory()
setattr(self, name, instance)
self.attributes_set[name] = instance
return instance
评论列表
文章目录