✅ 인스턴스라는 단어가 자주 등장한다. 인스턴스와 객체는 거의 동일한 의미로 사용되는 경우도 있지만, 인스턴스는 객체와 클래스의 관계를 설명할때 주로 쓰인다. 예를 들자면, 어떤 A라는 클래스에서 생성한 객체 B가 있다고 가정해보자. "객체 B는 클래스 A의 인스턴스 이다" 라고 표현할 수 있다.
class MyCar:
BMW = "520i"
Audi = "A6"
Hyundai = "Sonata"
Kia = "K5"
a = MyCar
print(a) # <class '__main__.MyCar'>
print(a.BMW) # "520i"
class MyCar:
BMW = "520i"
Audi = "A6"
Hyundai = "Sonata"
Kia = "K5"
def dreamCar():
print("Porche is good")
a = MyCar()
print(a.dreamCar()) # TypeError: dreamCar() takes 0 positional arguments but 1 was given
a.dreamCar()
는 a.dreamCar(a)
로 입력되는 꼴이다.class MyCar:
BMW = "520i"
Audi = "A6"
Hyundai = "Sonata"
Kia = "K5"
def dreamCar(self):
print("Porche is good")
a = MyCar()
print(a.dreamCar()) # "Porche is good"
class Constructor:
def __init__(self):
print("정말 자동으로 실행되네!?")
def test(self):
print("난 생성자가 아니라서 따로 호출을해야해")
a = Constructor()
print(a) #" 정말 자동으로 실행되네!?"
print(a.test()) # "난 생성자가 아니라서 따로 호출을해야해"
class Constructor2:
def __init__(self):
self.name = input("너의 이름은: ")
def speak(self):
print("니 이름은 {} 구나~".format(self.name))
a = Constructor2()
print(a.speak()) # 이름 입력하면, "니 이름은 000 구나~"
self.name
은 객체(여기서는 "a").name
의 의미라고 볼 수 있다. 즉 굳이 쉽게 이해하려고 노력해보면, 메소드 내의 name 변수를 호출하기 위해서는 a.name과 같은 방식으로 호출해야하는데 a가 메서드안으로 가면 self 인거나 마찬가지니 self.name 인 것이다. class Constructor2:
def __init__(self):
self.name = input("너의 이름은: ")
def speak(self):
print("니 이름은 {} 구나~".format(self.name))
class inheritance(Constructor2):
pass
b = inheritance()
print(b) // # Constructor2 클래스와 동일하게 동작한다.
# 상속 및 super() 함수의 사용 예제
class inheritance(Constructor):
def __init__(self):
super().__init__()
self.age = input("너의 나이는 : ")
def test(self):
super().test()
print("너의 나이는 {}살 이구나!".format(self.age))
b = inheritance()
print(b) # "너의 이름은: "->"너의 나이는 : "
print(b.test()) # "니 이름은 000 구나~" -> "너의 나이는 00살 이구나!"
class inheritance(Constructor):
def __init__(self):
super().__init__()
self.age = input("너의 나이는 : ")
def test(self):
print("너의 이름은 {} 이고, 나이는 {}살 이구나!".format(self.name, self.age))
b = inheritance()
print(b)
print(b.test()) # "너의 이름은 000이고, 나이는 00살 이구나!"