通过类变量公开数据的推荐"设计模式"是什么?

dav*_*ave 0 python oop design-patterns

我见过很多模块允许人们使用以下方式访问数据:

print blah.name
Run Code Online (Sandbox Code Playgroud)

相反:

print blah.get_name()
Run Code Online (Sandbox Code Playgroud)

鉴于名称是静态变量,使用变量方法而不是调用函数似乎是更好的选择.

我想知道最好的"设计"是用来实现这个.例如,给定一个Person对象,我应该如何公开nameage

class Person:

    def __init__(self, id):

        self.name = self.get_name(id)
        self.age  = self.get_age(id)

    def get_name(self, id=None):

        if not id:
            return self.name
        else:
            # sql query to get the name
Run Code Online (Sandbox Code Playgroud)

这将允许我:

x = Person
print x.name
Run Code Online (Sandbox Code Playgroud)

有推荐的替代方案吗?

tom*_*m10 5

Python 属性旨在解决此问题.

如果已定义了此类方法,则属性允许阶段blah.name,blah.name = xdel blah.name自动调用getter,setter和deleter方法.