Python 객체 지향 프로그래밍을 사용하면 변수가 단순히 프로그램에서 사용하는 값을 나타내는 기호인 클래스 수준 또는 인스턴스 수준에서 변수를 사용할 수 있습니다.
클래스 수준에서 변수는 클래스 변수라고 하고 인스턴스 수준의 변수는 인스턴스 변수라고 합니다. 간단한 예를 통해 클래스 변수와 인스턴스 변수를 이해합시다 -
# Class Shark class Shark: animal_type= 'fish' # Class Variable def __init__(self, name, age): self.name = name self.age = age # Creating objects of Shark class obj1 = Shark("Jeeva", 54) obj2 = Shark("Roli", 45) print ("Printing class variable using two instances") print ("obj1.animal_type =", obj1.animal_type) print ("obj2.animal_type =", obj2.animal_type) #Let's change the class variable using instance variable obj1.animal_type = "BigFish" print ("\nPrinting class variable after making changes to one instance") print ("obj1.animal_type=", obj1.animal_type) print ("obj2.animal_type =", obj2.animal_type)
위의 프로그램에서 Shark 클래스를 만든 다음 객체를 사용하여 클래스 변수를 변경하려고 합니다. 그러면 해당 특정 객체에 대한 새 인스턴스 변수가 생성되고 이 변수는 클래스 변수를 가립니다.
출력
Printing class variable using two instances obj1.animal_type = fish obj2.animal_type = fish Printing class variable after making changes to one instance obj1.animal_type= BigFish obj2.animal_type = fish
올바른 출력을 얻을 수 있도록 위의 프로그램을 수정합시다 -
# Class Shark class Shark: animal_type= 'fish' # Class Variable def __init__(self, name, age): self.name = name self.age = age # Creating objects of Shark class obj1 = Shark("Jeeva", 54) obj2 = Shark("Roli", 45) print ("Printing class variable using two instances") print ("obj1.animal_type =", obj1.animal_type) print ("obj2.animal_type =", obj2.animal_type) #Let's change the class variable using instance variable #obj1.animal_type = "BigFish" Shark.animal_type = "BigFish" print("New class variable value is %s, changed through class itself" %(Shark.animal_type)) print ("\nPrinting class variable after making changes through instances") print ("obj1.animal_type=", obj1.animal_type) print ("obj2.animal_type =", obj2.animal_type)
결과
Printing class variable using two instances obj1.animal_type = fish obj2.animal_type = fish New class variable value is BigFish, changed through class itself Printing class variable after making changes through instances obj1.animal_type= BigFish obj2.animal_type = BigFish