C++에서 클래스의 생성자는 인스턴스가 다른 인스턴스에서 생성되도록 허용합니다. 예 :Python에서 다른 인스턴스의 인스턴스
C::C(const C & c) {
bala...;
cc = c.cc;
}
파이썬에서이 작업을 수행하는 유사한 방법은 무엇입니까? 어떻게하면 되나요?
c1 = C()
c2 = C(c1)
?
C++에서 클래스의 생성자는 인스턴스가 다른 인스턴스에서 생성되도록 허용합니다. 예 :Python에서 다른 인스턴스의 인스턴스
C::C(const C & c) {
bala...;
cc = c.cc;
}
파이썬에서이 작업을 수행하는 유사한 방법은 무엇입니까? 어떻게하면 되나요?
c1 = C()
c2 = C(c1)
?
파이썬에서 변수를 정의 할 때 유형을 언급하지 않았습니다. 예 : x=4
인 경우 언제든지 x를 다른 값인 x="shasha"
으로 설정할 수 있습니다. 전혀 문제 없습니다.
파이썬에서는 메소드를 오버로드 할 수 없습니다. 귀하의 질문에 돌아 오는
:
당신은 파이썬 메모리 관리와 reference
와 actual 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
감사합니다 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
우리는 C++에서와 같이 파이썬에서 복사 생성자를 생성 할 수 없습니다. 그래서 당신은 대안으로 가야 할 것입니다. 내 설명을 업데이트하고 대안을 추가했습니다. 그게 당신에게 도움이됩니까? – Shasha99
있습니다 파이썬에서 컴파일 타임 타입. 그냥'c2 = c1'을하십시오. –
거기에'bala '란 무엇입니까? 그리고 당신의 질문은 이상합니다. 인스턴스를 가져 와서 그 속성을 다른 인스턴스에 할당하는 C++ 코드를 작성했습니다. 파이썬에서 똑같이하지 않으시겠습니까? –
@DanielRoseman 감사합니다. 나는 실제로 더 많은 것을 말하고 싶었다. 또한 cc = "이것은 사본"+ c.cc 일 수 있습니다. 그런 것. 답변 바락은 동일한 인스턴스의 복사본도 제공했습니다. 그러나 나는 단지 사본 이상을 원했다. – frankliuao