static method : 독립적인 함수들을 이 이름으로 묶어놓고 싶을 때 선언한다.
소멸자 : 객체가 메모리에서 사라질 때 호출된다.
class Academy:
# 클래스 소속 변수
name = "비트캠프-"
stnum = 0
# 객체를 통해서 호출 메서드
def __init__(self, name, num):
print("생성자 호출~")
# 객체 소속 변수(필드)
self.name = name
self.stnum = num
Academy.stnum += num
def __del__(self):
print("소멸자 호출~")
# 클래스를 통해서 호출 메서드
@classmethod
def gettotalstnum(cls):
return cls.stnum
# 클래스를 통해 호출 메서드
# 클래스 멤버변수/객체 필드변수와 무관한 동작(접근못함)
# 클래스와 연관관계는 있어서 클래스에 선언을 한다
# 그냥 함수를 독립적으로 선언하기 싫어서 클래스 이름으로 묶어놓을 때
@staticmethod
def description(duration):
print("IT 교육")
print("기간 : ", duration, "개월")
aca0 = Academy("신촌", 300)
aca1 = Academy("종로", 250)
print("*" * 20)
print(Academy.name + ":" + str(Academy.stnum))
print(Academy.name + aca0.name + ":" + str(aca0.stnum))
print(Academy.name + aca1.name + ":" + str(aca1.stnum))
print("전체 학생 수 : " + str(Academy.gettotalstnum())) # gettotalstnum(Academy)
Academy.description(5.5)
print("*" * 20)
pass: 나중에 설계하겠다.
def add(a, b):
pass
def sub(a, b):
pass
class Parent:
def __init__(self, name, age):
self.name = name
self.age = age
def character(self):
print("smooth")
def viewinfo(self):
print("name:", self.name)
print("age:", self.age)
class Child(Parent):
pass
c = Child("홍길동", 24)
c.character()
c.viewinfo()
파이썬도 객체지향 프로그래밍이 가능하다.
class Parent:
def __init__(self, name, age):
self.name = name
self.age = age
def character(self):
print("smooth")
def viewinfo(self):
print("name:", self.name)
print("age:", self.age)
class Child(Parent):
def __init__(self, name, age, money):
self.name = name
self.age = age
self.money = money
# 재정의
def character(self):
print("smart")
# 확장
def viewinfo(self):
Parent.viewinfo(self) #super().viewinfo()도 가능하다.
print("money:", self.money)
# 신규 추가
def play(self):
print("HaHaHa~")
c = Child("홍길동", 24, 3000)
c.character()
c.viewinfo()
c.play()