如果我有一个如下所示的类(只有更多的属性),在调用特定方法之前是否有清晰的方法来记录哪些字段是必需的?
class Example():
def __init__(self):
pass
@property
"""Have to use property methods to have docstrings..."""
def prop1(self):
return self._prop1
@prop1.setter
def task(self, value):
# validation logic..
self._prop1 = value
def method(self):
# check all required properties have been added
Run Code Online (Sandbox Code Playgroud)
我可以手工编写所有必需的属性数组并在方法中循环它们,但我想知道是否有更简洁的方法,例如通过实现@requiredProperty描述符.
该类用于生成Web API的POST请求.该请求有25个以上的参数,其中一些是必需的,一些是可选的.
而不是调用请求的方法必须循环遍历数组,例如:
required_props = ['prop1','prop2',....]
Run Code Online (Sandbox Code Playgroud)
我希望在Python中有一种向属性添加所需装饰器的方法,所以我不必手动跟踪.例如
@property, @required
def prop1(self):
return self._prop1
Run Code Online (Sandbox Code Playgroud)
在初始化对象时,确保提供所有属性不是最好的吗?然后,当您尝试访问它们时,将定义所有属性.
例如,
class Example(object):
def __init__(self, prop1, prop2):
self.prop1 = prop1
self.prop2 = prop2
Run Code Online (Sandbox Code Playgroud)
此外,PEP8的说明:
对于简单的公共数据属性,最好只公开属性名称,而不使用复杂的访问器/ mutator方法.
为什么要使用属性?
这应该与使用任何OO语言的方式相同:必须在构造期间设置必需的属性。调用对象方法绝不能使对象处于“不良”状态,这样method就可以在任何构造的对象上调用该方法。
如果上述内容不成立,则应考虑重构代码。
当然,总是可以通过戳破其胆量来将python对象更改为不再有效。除非有充分的理由,否则您不会这样做。不要为这件事而烦恼,因为只要您做一些愚蠢的事情,您的程序就应该浮出水面,以便您学习并停止。
| 归档时间: |
|
| 查看次数: |
5328 次 |
| 最近记录: |