有时候我们编写了很多类,并且已经将这些类当作数据结构来用,但是我们需要重复编写大量重复且样式统一的init()函数,这时候我们可以将初始化过程集中到一个单独的init()函数中,并将其定义在一个公共的基类中。
代码演示:
class Structure:
_fields = []
def __init__(self, *args):
if len(args) != len(self._fields):
raise TypeError('Expected {} arguments'.format(len(self._fields)))
for name, value in zip(self._fields, args):
setattr(self, name, value)
if __name__ == "__main__":
class Stock(Structure):
_fields = ["name", "price", "shares"]
这样我们实例化时相当容易构建。