2016-11-11 1 views
0

C++에서 클래스의 생성자는 인스턴스가 다른 인스턴스에서 생성되도록 허용합니다. 예 :Python에서 다른 인스턴스의 인스턴스

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

파이썬에서이 작업을 수행하는 유사한 방법은 무엇입니까? 어떻게하면 되나요?

c1 = C() 
c2 = C(c1) 

?

+0

있습니다 파이썬에서 컴파일 타임 타입. 그냥'c2 = c1'을하십시오. –

+0

거기에'bala '란 무엇입니까? 그리고 당신의 질문은 이상합니다. 인스턴스를 가져 와서 그 속성을 다른 인스턴스에 할당하는 C++ 코드를 작성했습니다. 파이썬에서 똑같이하지 않으시겠습니까? –

+0

@DanielRoseman 감사합니다. 나는 실제로 더 많은 것을 말하고 싶었다. 또한 cc = "이것은 사본"+ c.cc 일 수 있습니다. 그런 것. 답변 바락은 동일한 인스턴스의 복사본도 제공했습니다. 그러나 나는 단지 사본 이상을 원했다. – frankliuao

답변

0

파이썬에서 변수를 정의 할 때 유형을 언급하지 않았습니다. 예 : x=4 인 경우 언제든지 x를 다른 값인 x="shasha"으로 설정할 수 있습니다. 전혀 문제 없습니다.

파이썬에서는 메소드를 오버로드 할 수 없습니다. 귀하의 질문에 돌아 오는

:

당신은 파이썬 메모리 관리와 referenceactual value의 차이를 이해한다고 가정하면, 당신은 파이썬에서 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. 

항상 y = x과 같은 = operator을 사용하여 하나의 객체를 다른 객체로 복사 할 수 있지만 실제로 복사 할 수는 없습니다. 이제 참조 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 
+0

감사합니다 shasha. 그것은 내가 원하는 것일 뿐이지 만 정확하게는 아닙니다. C++과 비슷한 것을 찾고 있는데, 여기서 cc = c.cc (원래의 게시물에 있음) 또는 cc = "this is a copy"+ c.cc와 같이 생성자에서 정의하면 자동으로 사본임을 알 수 있습니다. 또 다른 인스턴스. 그런 것. deepcopy를 사용하는 경우, x = A(), y = copy.deepcopy (x), y.a = "copy"+ x.a와 같이 직접 작업해야합니다. – frankliuao

+0

우리는 C++에서와 같이 파이썬에서 복사 생성자를 생성 할 수 없습니다. 그래서 당신은 대안으로 가야 할 것입니다. 내 설명을 업데이트하고 대안을 추가했습니다. 그게 당신에게 도움이됩니까? – Shasha99

관련 문제