动态创建和迭代基类中的类属性/属性

时间:2018-02-08 16:11:36

标签: python inheritance properties attributes

我有两个非常相似的课程。事实上,这两个类之间的唯一区别是其中一个类有一个额外的字段。

为了保持代码DRY,我希望这两个类继承自基类,但我不确定如何处理其他字段属性。

解决方案可以是遍历类的属性,并在基类中实现它。以下伪代码说明了这一点:

class WidgetBase():
    __base_required_field_names = ('a','b','c')

    def __init__(self, name, **kwargs):
        self.name = name
        self.__encountered_names = []

        for key, value in kwargs.items():
            # ensure name not previously encountered, else raise error
            # create attribute and assign value
            pass

        # if not all required base fields not provided raise error


    def update(self, **kwargs):
        #  if unknown field raise error, else update field
        pass

    def write_to_file(self):
        # write attributes to CSV file
        pass


class Widget(BaseWidget):
    pass


class AdvancedWidget(BaseWidget):
    pass


# Example Usage

from datetime import datetime
import csv

widget = Widget('foo',a=1729,b=None,c=datetime.now())
widget.update(a=22,b='Babylonia')
widget.write_to_file()

awe = AdvancedWidget('notfoobar',a=22/7, b='Plimpton 322', c=datetime.now())
awe.update(c=datetime.strptime('20010101','%Y%m%d'))
awe.write_to_file()

这是实施所需功能的推荐方法(即“最佳做法”)吗?

我的主要问题是:

如何动态创建新属性并迭代它们?

0 个答案:

没有答案