我偶然发现了一些实现REST API的Python代码,它依赖于(即获取/设置)类这样的类:
class Model(
def __init__(self, foo=1, bar=0, baz=0):
self.foo = foo
self.bar = bar
self.baz = baz
def get_api(self):
return self.__dict__.keys()
def set_parameters(self, parameters):
for p in parameters.keys():
if p in self.__dict__.keys():
self.__dict__[p] = parameters[p]
基本上,REST API是"内置"来自get_api()
,因此它与班级“1:1”匹配。实例属性。
是否考虑过#34;良好做法"在Python世界? (看起来有些黑客对我来说)
如果没有,在类中存储模型的更好方法是什么?
答案 0 :(得分:0)
使用的方法很好,但是您有一些术语错误:
self.foo
等属于instance
属性 - 也就是说,您只会在Model
的实例上看到它们:
>>> Model.foo # class access
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'Model' has no attribute 'foo'
>>> m = Model() # create an instance
>>> m.foo # instance access
1
properties
是非常特定的属性类型:基本上,它们是由代码(this answer has more details)支持的数据位。