使用Python的慢速方法属性

时间:2014-11-02 17:02:17

标签: python properties

通过慢速方法加载的类中处理属性的优先方法是什么?

在我的特定情况下,我有一个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()过程中抛出异常。

话虽如此,这是最恐怖的方式吗?

0 个答案:

没有答案