来自Python中另一个实例的实例

时间:2016-11-11 11:23:38

标签: python c++ class constructor

在C ++中,类的构造函数允许从另一个实例构造实例。例如

C::C(const C & c) {
    bala...;
    cc = c.cc;
}

在Python中,执行此操作的类似方法是什么?我该怎么用

c1 = C()
c2 = C(c1)

1 个答案:

答案 0 :(得分:1)

我们在python中定义变量时没有提到类型。例如:如果x=4,您始终可以将x设置为其他内容x="shasha"。没问题。

注意我们不能在python中重载方法。

回到你的问题:

假设您了解python内存管理以及referenceactual value之间的区别,您可以在python中使用deepcopy功能:

import copy
class A(object):
    def __init__(self):
         self.a=10

x = A()

y= copy.deepcopy(x)

x.a=15

print(y.a)  # prints 10.

请注意,您始终可以使用= operator y = x将一个对象复制到另一个对象,但它实际上不会复制任何内容。现在,引用y和x实际上都指向同一个实例。即如果你用一个改变任何东西,它将自动反映到另一个:

class A(object):
    def __init__(self):
         self.a=10

x = A()

y = x

x.a=15

print(y.a)  # prints 15.

您还可以创建虚拟构造函数,如以下示例所示:

class A:
    def __init__(self):
        self.a=10

    def dummy_constructor(self):
        temp = A()
        temp.a = (self.a + 20 - 5 )*100/10

        return temp


x=A()

y=x.dummy_constructor()

print(y.a)   #250
print(x.a)   #10