#클래스
-함수+변수
#오브젝트
-클래스를 통해 생성 ex) 클래스-> 빵틀, 오브젝트 -> 빵
-오브젝트(object) = 인스턴스(instance)
*self: 클래스 객체 표현, init함수와 연결할 때 활용
* . (점찍기): 객체 변수 접근
오브젝트 명칭+점 찍기+클래스의 속성(함수)입력 -> 오브젝트 출력
p.say_hello() #~클래스에서 say_hello라는 속성(함수)을 p라는 오브젝트로 출력
p.say_hello("성중") #~변수를 적용시켜 출력 가능!
‘Person’이라는 클래스를 만들어보자. (우선 변수 없이 함수 하나만 가진 클래스)
class Person:
def say_hello(self):
print("안녕!")
‘p’라는 오브젝트를 만들어보자.
p=Person() #~클래스와 오브젝트를 연결
p.say_hello() #~오브젝트 출력
-> 안녕!
‘Person’클래스에 변수를 넣어보자.
class Person:
name="성중"
def say_hello(self):
print("안녕! 나는"+self.name)
다시 p를 출력하면?
p=Person()
p.say_hello()
-> 안녕! 나는 성중
여기서 계속 name을 바꿔가면서 출력될 수 있는 클래스를 짜보자!
우선 오브젝트들을 만들어보자.
sungjoong = Person()
michael = Person()
jenny = Person()
name변수를 “성중”으로 고정 시키지 않고 오브젝트를 만들 때 새로 이름이 할당되도록 해보자.
*init함수: ‘__init__()’으로 표현
initialize(초기화)의 약자, 오브젝트 만들 때 마다 할당
오브젝트를 만들 때마다 init안의 인자를 받아서 변수에 인자를 적용함
class Person:
def __init__(self, name): #~name이 클래스의 오브젝트마다 새로 할당
self.name=name
def say_hello(self):
print("안녕! 나는"+self.name)
sungjoong = Person("성중") #~클래스와 오브젝트를 연결
michael = Person("마이클")
jenny = Person("제니")
sungjoong.say_hello() #~오브젝트 출력
michael.say_hello()
jenny.say_hello()
-> 안녕! 나는성중
안녕! 나는마이클
안녕! 나는제니
say_hello()에 인자를 추가해보자,, to_name에게 인사하도록
class Person:
def __init__(self, name):
self.name=name
def say_hello(self, to_name):
print("안녕! " + to_name + " 나는 "+self.name)
sungjoong = Person("성중")
michael = Person("마이클")
jenny = Person("제니")
sungjoong.say_hello("마이클")
michael.say_hello("제니")
jenny.say_hello("성중")
-> 안녕! 마이클 나는 성중
안녕! 제니 나는 마이클
안녕! 성중 나는 제니
init함수에 ‘나이’인자를 추가하고 새로운 함수를 짜보자!
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self, to_name):
print("안녕! " + to_name + " 나는 "+self.name)
def introduce(self):
print("내 이름은 " + self.name + " 그리고 나는 " + str(self.age) + "살이야.")
sungjoong = Person("성중", 21)
sungjoong.introduce()
-> 내 이름은 성중 그리고 나는 21살이야.
#상속(inheritance):공통된 클래스를 기본으로 깔고 그 밑에 세부 클래스를 만들 때
앞선 Person클래스를 기본으로 Police클래스와 Programer클래스를 씌워 보자!
class Police(Person): #~Police클래스가 Person클래스를 상속
def arrest(self, to_arrest):
print("넌 체포됐다. " + to-arrest)
class Programmer(Person): #~Programmer클래스가 Person클래스를 상속
def program(self, to_program):
print("다음엔 뭘 만들지? 아, " + to_program + "! 이걸 만들어야겠다.")
각각 클래스에 오브젝트를 만들어주자!
sungjoong = Person("성중", 21)
jenny = Police("제니", 23)
michael = Programmer("마이클", 22)
Person클래스를 상속해 introduce()속성도 적용됨, 동시에 세부 클래스 속성 적용
jenny.introduce()
jenny.arrest("성중")
michael.introduce()
michael.program("이메일 클라이언트")
-> 내 이름은 제니 그리고 나는 23살이야.
넌 체포됐다. 성중
내 이름은 마이클 그리고 나는 22살이야.
다음엔 뭘 만들지? 아, 이메일 클라이언트! 이걸 만들어야겠다.
코드 한눈에 보기
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self, to_name):
print("안녕! " + to_name + " 나는 "+self.name)
def introduce(self):
print("내 이름은 " + self.name + " 그리고 나는 " + str(self.age) + "살이야.")
class Police(Person):
def arrest(self, to_arrest):
print("넌 체포됐다. " + to_arrest)
class Programmer(Person):
def program(self, to_program):
print("다음엔 뭘 만들지? 아, " + to_program + "! 이걸 만들어야겠다.")
sungjoong = Person("성중", 21)
jenny = Police("제니", 23)
michael = Programmer("마이클", 22)
sungjoong.introduce()
jenny.introduce()
jenny.arrest("성중")
michael.introduce()
michael.program("이메일 클라이언트")
'Languages > Python' 카테고리의 다른 글
[워니 파이썬 기초] #6 휴대폰으로 문자 보내기 (0) | 2021.02.19 |
---|---|
[워니 파이썬 기초] #5 패키지, 모듈 (0) | 2021.02.19 |
[워니 파이썬 기초] #3 자료구조 - 리스트, 튜플, 딕셔너리 (0) | 2021.02.19 |
[워니 파이썬 기초] #2 반복문 (0) | 2021.02.19 |
[워니 파이썬 기초] #1 변수, 타입, 조건문, 함수 (0) | 2021.02.19 |