通过慢速方法加载的类中处理属性的优先方法是什么?
在我的特定情况下,我有一个profile
属性,该属性使用requests
库从网页填充。根据最终用户的连接,这可能需要几秒钟。以下是我将这个属性描述给最终用户的两种方法:
load()方式:
usr = User('username')
usr.profile.load()
name = usr.profile.name
后端:
class User:
username = ''
profile = None
def __init__(self, username):
self.username = username
self.profile = Profile(self.username)
class Profile:
def load(self):
# Load the profile here
物业方式:
usr = User('username')
name = usr.profile.name
后端:
class User:
username = ''
_profile = None
@property
def profile(self):
if not self._profile:
self._profile = Profile(self.username)
self._profile.load()
return self._profile
def __init__(self, username):
self.username = username
class Profile:
def load(self):
# Load the profile here
在我的头顶,属性方式的专业人员不会让最终用户了解load()函数,它可以节省空间。缺点是它对于属性引用来说意外地很慢,并且它可能在load()过程中抛出异常。
话虽如此,这是最恐怖的方式吗?