在Python中复制基类对象的值

时间:2015-10-08 12:55:25

标签: python class inheritance

有没有办法将属性值从基类的对象复制到派生类的对象?

class Base():
    def __init__(self):
       self.a = 10
       self.b = None

class Derived(Base):
       self.c = 30

def main():
    base = Base()
    base.b = 20
    derived = Derived(base)

我试图找到一种更复杂的pythonic来复制基类对象的值,因为基类有很多变量,但是我找不到一个简洁的方法。

我想要变量"派生"得到它的价值" a = 10 b = 20 c = 30"。

2 个答案:

答案 0 :(得分:2)

如何进行继承。您将基类的实例传递给派生类的__init__,这与继承其属性完全无关。相反,做:

class Base():

    def __init__(self):
       self.a = 10


class Derived(Base):

    def __init__(self):
       super(Derived, self).__init__()  # calls Base.__init__
       self.b = 'abc'


def main():
    base = Base()
    derived = Derived()

答案 1 :(得分:0)

如何使用默认参数?

class Base():
    def __init__(self, a=10):
       self.a = a
class Derived(Base):
    def __init__(self, a=10, b=None):
       super().__init__(a)  # python 3
       # Base.__init__(self, a)  # python 2
       self.b = b or 'abc'

def main():
    base = Base()
    derived = Derived()

    print(base.a)
    print(derived.a, derived.b)

main()

# output:
# 10
# 10 abc

还要注意你如何调用'构造函数'负责设置__init__

的基类self.a