OOP:设计这个对象的最佳方法是什么?

2024-04-27 16:47:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个settings对象,它包含一些通用设置。这些设置将针对每个用户进行更改。我想知道最好的编码方式是什么。我目前的方法是:

class Settings(object):

    def __init__(self, user=None):

        if user and not isinstance(user, users.User):
            raise TypeError('must be a User object')

        self.user = user

    @property
    def title(self):

        if self.user:
            return 'user setting'

        return 'generic setting'

考虑到Settings中会有一些方法,每次都必须运行if语句。在

我正在考虑使用一个扩展UserSettings类来覆盖默认值并提供特定于用户的设置。不过,我听说重写方法是糟糕的OOP设计。这让我想到了第二种选择。。。在

然后我考虑创建UserSettings,但它不会扩展{}。它会把它包装起来,我会有一些类似的东西:

^{pr2}$

这样我就可以:

print user_settings.title # get the user title
print user_settings.settings.title # get the generic title

我该如何编码?在


Tags: 方法用户selfreturnifsettingsobjecttitle