如何创建一个继承的dict类?

时间:2016-03-18 09:06:05

标签: python inheritance dictionary

我正在使用pypi dataset进行数据库交互。 它说我们可以排成任何类似dict的类。

您能举几个关于属性,属性和方法继承的示例吗?特别是构造函数&析构函数。

2 个答案:

答案 0 :(得分:3)

从字典继承与继承任何其他类型不同。考虑这个简单的例子:来自dict的子类而不添加任何功能:

class Employee(dict):
    pass

e = Employee()
e['name'] = 'Tushar Jain'

添加一些属性getter和setter以便更轻松地访问属性:

class Employee(dict):
    @property
    def name(self):
        return self['name']

    @name.setter
    def name(self, value):
        self['name'] = value

e = Employee()
e.name = 'Tushar Jain'
print(e)

答案 1 :(得分:1)

您可能会发现AttrDict对于快速创建类很有用。它使用了引擎盖下的字典,因此您应该能够将其传递给数据集。

可以设置和读取dict的键作为属性。

E.g。

import attrdict
from datetime import date

class Employee(attrdict.AttrDict):

    def get_years_of_service(self):
        return date.today() - self.start_date

>>> steve = Employee()
>>> steve.name = "Steve"
>>> steve.age = 41
>>> print steve.age
41
>>> print steve['age']
41
>>> steve.start_date = date(year=2001, month=1, day=1)
>>> print steve.get_years_of_service()
5555 days, 0:00:00

仅导出属性(而非方法)。