在C++中,類的構造函數允許從另一個實例構造實例。例如Python中的另一個實例的實例
C::C(const C & c) {
bala...;
cc = c.cc;
}
在Python中,這是什麼類似的方式呢?我如何使用
c1 = C()
c2 = C(c1)
?
在C++中,類的構造函數允許從另一個實例構造實例。例如Python中的另一個實例的實例
C::C(const C & c) {
bala...;
cc = c.cc;
}
在Python中,這是什麼類似的方式呢?我如何使用
c1 = C()
c2 = C(c1)
?
我們在python中定義變量時沒有提及類型。例如:如果x=4
,您隨時可以將x設置爲其他值,x="shasha"
。沒有問題。
請注意,我們不能在Python中重載一個方法。
現在回到你的問題:
假設你理解了蟒蛇的內存管理和reference
和actual value
之間的區別,您可以使用deepcopy
功能在Python:
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
謝謝shasha。這是我想要的,但不完全是。我正在尋找類似於C++的東西,如果我在構造函數中定義像cc = c.cc(在我的原始文章中)或cc =「這是一個副本」+ c.cc,那麼您會自動知道它是另一個例子。類似的東西。如果你使用deepcopy,恐怕你必須自己做,比如x = A(),y = copy.deepcopy(x),y.a =「copy」+ x.a. – frankliuao
你不能像在C++中那樣在python中創建一個拷貝構造函數。所以你將不得不採取一些替代方案。我更新了我的解釋並添加了一個替代方案。這對你有好處嗎? – Shasha99
有沒有Python中的編譯時類型。只要做'c2 = c1'。 –
'bala'應該在那裏?你的問題很奇怪,你已經編寫了一個接受一個實例的C++代碼,並將它的屬性賦值給另一個實例,你爲什麼不在Python中做同樣的事情? –
@DanielRoseman謝謝。我其實想在那裏多說一些。它也可以是cc =「這是一個副本」+ c.cc;類似的東西。 barak給出的答案也是同一個實例的副本。但我真的想要的不僅僅是一個副本。 – frankliuao