> 백엔드 개발 > 파이썬 튜토리얼 > Python의 개체 인스턴스 간에 공유 클래스 데이터를 방지하려면 어떻게 해야 합니까?

Python의 개체 인스턴스 간에 공유 클래스 데이터를 방지하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-24 06:02:24
원래의
367명이 탐색했습니다.

How Can I Prevent Shared Class Data Among Object Instances in Python?

인스턴스 간 클래스 데이터 공유 방지

객체 지향 프로그래밍에서는 클래스의 여러 인스턴스에 대해 고유한 데이터를 유지하는 것이 중요합니다. 그러나 기본적으로 클래스 수준 변수는 모든 인스턴스에서 공유되므로 예기치 않은 동작이 발생할 수 있습니다.

문제 이해

다음 코드를 고려하세요.

class a:
    list = []

x = a()
y = a()

x.list.append(1)
y.list.append(2)
x.list.append(3)
y.list.append(4)

print(x.list) # prints [1, 2, 3, 4]
print(y.list) # prints [1, 2, 3, 4]
로그인 후 복사

x와 y에 대해 별도의 목록을 얻는 대신 두 인스턴스 모두 동일한 목록을 공유합니다. 이는 목록이 클래스 변수로 선언되어 모든 인스턴스가 동일한 기본 객체를 참조하기 때문에 발생합니다.

해결책: 인스턴스 변수

데이터 공유를 방지하려면 인스턴스 변수가 다음과 같아야 합니다. 활용됩니다. 인스턴스 변수는 클래스의 생성자(__init__) 내에 정의됩니다. 수정된 코드는 다음과 같습니다.

class a:
    def __init__(self):
        self.list = []

x = a()
y = a()

x.list.append(1)
y.list.append(2)
x.list.append(3)
y.list.append(4)

print(x.list) # prints [1, 3]
print(y.list) # prints [2, 4]
로그인 후 복사

이 경우 목록 속성은 생성자의 각 인스턴스에 대해 초기화되어 별도의 복사본을 생성합니다. 이제 print 문은 x와 y에 대한 별도의 목록을 사용하여 의도한 동작을 정확하게 반영합니다.

위 내용은 Python의 개체 인스턴스 간에 공유 클래스 데이터를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿