이 단계에서는 Python 의 클래스 속성에 대해 배우게 됩니다. 클래스 속성은 클래스 내에서 정의되고 해당 클래스의 모든 인스턴스 (객체) 에서 공유되는 변수입니다. 이는 각 인스턴스에 특정한 인스턴스 속성과 다릅니다. 효율적이고 체계적인 클래스를 설계하려면 클래스 속성을 이해하는 것이 중요합니다.
클래스 속성을 사용하여 간단한 클래스를 생성하는 것으로 시작해 보겠습니다.
-
VS Code 편집기를 엽니다.
-
~/project 디렉토리에 class_attributes.py라는 새 파일을 생성합니다.
~/project/class_attributes.py
-
class_attributes.py 파일에 다음 코드를 추가합니다.
class Dog:
species = "Canis familiaris"
def __init__(self, name, age):
self.name = name
self.age = age
## Creating instances of the Dog class
dog1 = Dog("Buddy", 3)
dog2 = Dog("Lucy", 5)
## Accessing the class attribute
print(dog1.species)
print(dog2.species)
## Accessing instance attributes
print(dog1.name)
print(dog2.name)
이 예제에서 species는 Dog 클래스 내에서 정의되었지만 어떤 메서드 외부에서 정의되었기 때문에 클래스 속성입니다. name과 age는 __init__ 메서드 내에서 정의되고 각 Dog 인스턴스에 특화되어 있기 때문에 인스턴스 속성입니다.
-
터미널에서 다음 명령을 사용하여 class_attributes.py 스크립트를 실행합니다.
python class_attributes.py
다음과 같은 출력을 볼 수 있습니다.
Canis familiaris
Canis familiaris
Buddy
Lucy
보시다시피 dog1과 dog2는 모두 동일한 species 값인 "Canis familiaris"를 공유합니다. 그러나 name은 인스턴스 속성이기 때문에 서로 다른 name 값을 갖습니다.
-
이제 클래스 속성을 수정하고 인스턴스에 어떤 영향을 미치는지 살펴보겠습니다.
class Dog:
species = "Canis familiaris"
def __init__(self, name, age):
self.name = name
self.age = age
## Creating instances of the Dog class
dog1 = Dog("Buddy", 3)
dog2 = Dog("Lucy", 5)
## Accessing the class attribute
print(dog1.species)
print(dog2.species)
## Modifying the class attribute
Dog.species = "New Species"
## Accessing the class attribute again
print(dog1.species)
print(dog2.species)
-
class_attributes.py 스크립트를 다시 실행합니다.
python class_attributes.py
다음과 같은 출력을 볼 수 있습니다.
Canis familiaris
Canis familiaris
New Species
New Species
Dog.species를 수정하면 변경 사항이 dog1과 dog2 모두에 반영된다는 것을 알 수 있습니다. 이는 두 인스턴스가 동일한 클래스 속성을 공유하기 때문입니다.
이 예제는 클래스 속성의 기본 개념을 보여줍니다. 클래스 속성은 클래스의 모든 인스턴스에서 공유되며 클래스에 직접 접근하여 수정할 수 있습니다.