简化数据结构的初始化方法
程序员文章站
2022-07-14 18:59:58
...
你写了很多仅仅用作数据结构的类,不想写太多烦人的 __init__()
函数。
可以在一个基类中写一个公用的 __init__()
函数,然后使你的类继承自这个基类。
# 公共结构
class Struct:
_filed = []
def __init__(self, *args):
if len(args) != len(self._filed):
raise TypeError('Expected {} arguments'.format(len(self._filed)))
for name, value in zip(self._filed, args):
setattr(self, name, value)
class Stock(Struct):
_filed = ['name', 'shares', 'price']
class Point(Struct):
_filed = ['x', 'y']
class Circle(Struct):
_filed = ['radius']
def area(self):
return math.pi * self.radius ** 2
s = Stock('ACME', 50, 91.1)
p = Point(2, 3)
c = Circle(4.5)
当你需要使用大量很小的数据结构类的时候, 相比手工一个个定义 __init__()
方法而已,使用这种方式可以大大简化代码。