>백엔드 개발 >파이썬 튜토리얼 >클래스 변수와 인스턴스 변수의 차이점 Python

클래스 변수와 인스턴스 변수의 차이점 Python

WBOY
WBOY원래의
2024-08-07 06:39:43637검색

Difference b/w class variable and instance variable Python

Python의 클래스 변수 및 인스턴스 변수

파이썬에는 클래스 변수와 인스턴스 변수라는 두 가지 유형의 변수가 있습니다. 효율적이고 체계적인 코드를 작성하려면 이 두 가지 유형의 변수 간의 차이점을 이해하는 것이 중요합니다. 다른 언어와는 조금 다릅니다.

클래스 변수

정적 변수라고도 하는 클래스 변수는 클래스의 모든 인스턴스에서 공유되는 변수입니다. 메서드나 생성자 외부에서 정의되며 특정 인스턴스가 아닌 클래스 자체와 연결됩니다.

클래스 변수를 선언하려면 = 연산자를 사용하여 클래스 정의 내에서 변수에 값을 할당하기만 하면 됩니다. 예는 다음과 같습니다.

class MyClass:
    class_variable = "This is a class variable"

print(MyClass.class_variable)  # Output: This is a class variable

obj1 = MyClass()
obj2 = MyClass()
print(obj1.class_variable)      # Output: This is a class variable
print(obj2.class_variable)      # Output: This is a class variable

클래스 변수는 클래스의 모든 인스턴스에서 공유됩니다. 한 인스턴스의 클래스 변수 값을 수정하면 다른 모든 인스턴스에도 영향을 미칩니다.

인스턴스 변수

반면에 인스턴스 변수는 클래스의 각 인스턴스에 고유한 변수입니다. 클래스의 인스턴스가 생성될 때 생성되며 해당 특정 인스턴스와 연결됩니다.

인스턴스 변수를 선언하려면 클래스의 메서드나 생성자 내에서 정의해야 합니다. 예는 다음과 같습니다.

class MyClass:
    def __init__(self, instance_variable):
        self.instance_variable = instance_variable

obj1 = MyClass("obj1 instance variable")
print(obj1.instance_variable)  # Output: obj1 instance variable


obj2 = MyClass("obj2 instance variable")
print(obj2.instance_variable)  # Output: obj2 instance variable

이 예에서 instance_variable은 MyClass 클래스의 인스턴스 변수입니다. __init__(생성자) 메서드에서 초기화되며 self 키워드를 사용하여 액세스할 수 있습니다.

클래스의 각 인스턴스에는 인스턴스 변수의 자체 복사본이 있습니다. 한 인스턴스의 인스턴스 변수 값을 수정해도 다른 인스턴스의 값에는 영향을 미치지 않습니다.

차이점과 용도

클래스 변수와 인스턴스 변수의 주요 차이점은 클래스 변수는 클래스의 모든 인스턴스에서 공유되는 반면, 인스턴스 변수는 각 인스턴스마다 고유하다는 것입니다.

클래스 변수는 클래스의 모든 인스턴스 간에 데이터를 공유하려는 경우 유용합니다. 예를 들어 클래스 변수를 사용하여 생성된 인스턴스 수를 추적하거나 모든 인스턴스에서 사용되는 상수 값을 저장할 수 있습니다.

반면, 인스턴스 변수는 각 인스턴스에 특정한 데이터를 저장하려는 경우에 유용합니다. 예를 들어 인스턴스 변수를 사용하여 사람의 이름이나 나이를 저장할 수 있습니다.


이 글이 Python의 클래스 변수와 인스턴스 변수를 이해하는 데 도움이 되기를 바랍니다. 더 궁금한 점이 있으면 알려주세요!

위 내용은 클래스 변수와 인스턴스 변수의 차이점 Python의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.