【发布时间】:2014-12-15 13:09:44
【问题描述】:
我有两个类,其中一个继承自另一个:
class DaParent(object):
name = ''
number = 0
class DaChild(DaParent):
additional = ''
我现在创建一个 Parent 并更改属性:
parent = DaParent()
parent.name = 'papa'
parent.number = 123
从这一点开始,我想创建一个 Child,我想在其中复制父级的所有属性。我当然可以这样做:
child = DaChild()
child.name = parent.name
child.number = parent.number
问题是,在开发过程中,这个类会增长到拥有相当多的属性,我不想经常改变手动将属性复制到孩子中。
有没有办法自动将父对象的属性接管到新的子对象中?欢迎所有提示!
[编辑]
只是为了解释我为什么要这样做。我使用Peewee ORM 与我的数据库进行交互。我现在想修改一个表(这意味着如果记录更新,我想保留所有以前的版本)。我打算这样做的方式是例如创建一个Person 类和一个继承自Person 类的PersonRevision 类。然后我覆盖peewee save() method 不仅保存Person 对象,还将所有属性复制到PersonRevision 对象中并保存。因为我永远不会直接与PersonRevision 类进行交互,所以我不需要阴影或任何花哨的东西。我只想复制属性并将对象称为save() 方法。
【问题讨论】:
-
你真的希望那些是 class,而不是 instance 属性吗?
-
@jonrsharpe - 据我了解,它们需要是实例属性,因此是对象的属性,而不是类本身。
-
这不是你现在拥有的——在
class内部但在实例方法def外部定义的属性是类属性。跨度> -
试图确定我理解:孩子应该跟随父母吗? IE。如果 parent.name 改变,child.name 也应该改变吗?
-
根据名称,您肯定不想使用继承。孩子有父母,但它不是(至少在一段时间内)不是父母。
标签: python class oop object inheritance