#클래스를 정의하고 꼭 init함수에서 변수에 대해서 self로서 초기화를 시켜줘야함
#메소드는 클래스 내부에 함수를 설정할 수 있고 같은 이름의 함수 인수이름이어도
#self.변수 이라고 하면 메인 init함수안의 변수의 값을 사용한다고 생각.
# 멤버 변수:객체에 추가로 변수를 외부에서 만들어서 사용할 수 있다.
# #변수는 확장을 한 객체에 한해서만 적용이 된다.
#상속:부모 클래스를 좀 더 일반적으로 만들어주고 싶을 때
#메인 클래스에서 비슷한 부분이 있어서 그걸 그대로 사용해줌
#상속후 초기화 과정 첫번째
#다중상속에서는 , 로 구분
#메소드 오버라이팅: 자식 클래스에서 부모 클래스의 메소드를 다시 정의해서 \\
#해당 클래스의 용도에 맞는 메소드로 사용 하는 것
#pass :미완성의 함수여도 그냥 프로그램 오류 없이 진행시키는 용도
#super : 상속할 때 부모클래스 초기화 할때쓰는 다른 방식
#형식: super().__init__(부모 클랫 변수) +self는 사용안함
#문제: 다중상속할때 순서에 영향을 받으므로 각부모 클래스마다 따로 초기화를 해줘야함
1.[2점] 다중 상속 시, super()를 사용하면 모든 부모 클래스에 대해서 초기화를 할 수 있다.
X, 다중 상속 중 앞에 있는 부모 클래스에 대해서만 초기화 가능
2.[2점] class Person: def greeting(self,name): Person.name=name print('안녕하세요. 저는 {}입니다.'.format(#1)) class Student(Person): def greeting(self,name,schoolname): Person.greeting(self,name) print('저는 {} 학생입니다.'.format(#2))
A=Student() A.greeting('홍길동','세종대학교')
위 코드를 완성시켜 안녕하세요. 저는 홍길동입니다. 저는 세종대학교 학생입니다. 이라는 출력을 얻고 싶으면 #[1=Person.name](http://1%3Dperson.name/) #2=Person.schoolname 을 입력해 코드를 완성시키면 된다
X, Person 클래스 안에 schoolname 인수 없음
3.[2점] class unit: def init(self,name,subject, student_ID): self.name = name self.subject = subject self.student_ID = student_ID print("%s: %s %d"%(self.name,subject, student_ID))
student = unit("세종이","SAI") 넣으면 세종이:SAI 로 출력된다.
X, student_ID 인수가 부
4.[2점]강의 내용 중 class Unit: def init(self, name, hp): self.name=name self.hp= hp class AttackUnit(Unit) def init(self, name, hp, damage): Unit.init(self, name, hp) self.damage=damage print("{0}유닛이 생성 되었습니다. ".format(self.name)) print("체력: {0}, 공격력 {1}".format(self.hp, self.damage))
def attack(self, location): print("{0}:{1} 방향으로 적군을 공격 합니다. [공격력 {2}]".format(name, location, damage)) 에서 틀린 곳 두곳을 찾아라
class AttackUnit(Unit)뒤에 “:” 빠짐, 밑줄친 곳에 self.이 붙어야함
5.[2점] class unit: def init (self, name, year, location): ~ def money(self, dollar): ~ def job(self, year): ~ 선언후 변수 a에다가 a.money(5000)을 하고 print("%d" %a.money)하면 실행이 된다.