由于我有Java背景,它非常冗长和严格,所以我发现Python对象的可变性使其具有比构造函数中呈现的字段更多的字段,这真的很“丑陋”。
为了习惯Pythonic的思维方式,我想知道如何允许构建我的对象。
我的直觉是要在构建时传递字段,例如:
def __init__(self, foo, bar, baz=None):
self.foo = foo
self.bar = bar
self.baz = baz
但是当需要传递许多字段时,那会变得非常冗长和混乱。为了克服这个问题,我认为最好的方法是将一个字典传递给构造函数,然后从中提取字段:
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
我能想到的另一种机制是在其他地方添加字段,例如:
在其他地方添加字段 ,比如:
class Blah(object):
def __init__(self):
pass
...
blah = Blah()
blah.foo = var1
但是对我来说,这感觉太松散了。
(我想问题在于如何在Python中处理接口...)
因此,重申问题:我应该如何构建我的Python对象?有一个公认的惯例吗?
__new__
时。当调用__init__
时,实例已经存在,这是初始化时间。 - u0b34a0f6ae