在Java中有一个非常冗长和严格的背景,我发现能够改变Python对象,以便为它们提供除了提供给构造函数之外的字段真的"丑陋".
试图让自己习惯于Pythonic的思维方式,我想知道我应该如何构建我的对象.
我的直觉是必须在施工时传递字段,例如:
def __init__(self, foo, bar, baz=None):
self.foo = foo
self.bar = bar
self.baz = baz
Run Code Online (Sandbox Code Playgroud)
但是,这可能会变得过于冗长和令人困惑,许多领域都要通过.为了克服这个问题,我假设最好的方法是将一个字典传递给构造函数,从中提取字段:
def __init__(self, field_map):
self.foo = field_map["foo"]
self.bar = field_map["bar"]
self.baz = field_map["baz"] if baz in field_map else None
Run Code Online (Sandbox Code Playgroud)
我能想到的另一种机制是在其他地方添加字段,例如:
class Blah(object):
def __init__(self):
pass
...
blah = Blah()
blah.foo = var1
Run Code Online (Sandbox Code Playgroud)
但随着那种感觉这样太松了我.
(我想我脑子里的问题是我如何处理Python中的接口 ......)
所以,重申一个问题:我应该如何在Python中构建我的对象?是否有公认的惯例?