IT흔적

[파이썬] 1.클래스의 개념, 생성, 활용 본문

DO it! Python/05.파이썬 날개 달기

[파이썬] 1.클래스의 개념, 생성, 활용

흔적남기는 개발자 2019. 1. 19. 23:45

1. 객체, 인스턴스 구분하기입니다. 제 이름으로 작성을 했습니다.



a = SunWoong() # a는 객체 , a는 SunWoong의 인스턴스 , 객체와 인스턴스는 같은 말이고 클래스에 의해서 생성된 객체를 인스턴스라고 부른다.


# 클래스: 똑같은 무엇인가를 계속해서 만들어낼수있는 설계 도면

인스턴스: 클래스에 의해서 만들어진 피조물을 뜻함


원 클래스 -> 무한 객체

 2.클래스 만들기입니다. 제가 좋아하는 리버풀 레전드 제라드를 예를 들어서 설명해봤습니다.

class liverpool:
def gerrard(self, goal, assist):
self.goal = goal
self.assist = assist
def GP(self):
result = self.goal + self.assist
print("제라드는 19시즌 %d골 %d도움 총 %d공격 포인트를 올렸다" % (self.goal, self.assist, result))

key = liverpool()
key.gerrard(20, 10)
key.GP()


출력값:

제라드는 19시즌 20골 10도움 총 30공격 포인트를 올렸다

제가 Class를 이용해서 만든 코드는 제라드 선수에 골과 도움 공격포인트 작성입니다. 한줄씩 설명을 적었습니다.


(1) class liverpool # 클래스이름을 리버풀로 작성을 했습니다.


(2) def gerrard(self, goal, assist)   # 클래스 함수는 제라드 이름과  입력인수에는 self, goal, assist로 작성 * 클래스 함수는 메서드랑 같은 말


(3) def GP # 공격포인트 함수를 만들어서 공격포인트 값을 만들고 출력문을 작성


(4) key = liverpool  #key라는 이름으로 liverpool() 클래스를 사용 할수 있고. key라는 이름과 도트연산자(.)를 통해서 key.gerrard 연결할수 있다.


(5) key.gerrard(20, 10) # 입력인수가 3개인데 2개만 적힌 이유는 클래스 함수 첫번째 인수는 반드시 self가 나와야한다.   

   self는 그저 key라는 값과 입력인수를 연결해주기 위해서 있는것이다. 그리고 gerrard 함수 값 self.goal = key. goal 이다.


3. __init__  # 인스턴스를 만들 때 항상 실행되는 값이다. 간략하게 코드를 작성 할 수 있다!!

class liverpool:
def team(self, name):
self.name = name
def gp(self, goal, assist):
self.goal = goal
self.assist = assist
print("%s는 19시즌 %d골 %d도움이다. " % (self.name, self.goal, self.assist))

key = liverpool()
key.team("살라")
key.gp(10, 20)

# 살라는 19시즌 10골 20도움이다.

class liverpool:
def __init__(self, name):
self.name = name
def gp(self, goal, assist):
self.goal = goal
self.assist = assist
print("%s는 19시즌 %d골 %d도움이다. " % (self.name, self.goal, self.assist))

key = liverpool("살라")
key.gp(10, 20)

# 살라는 19시즌 10골 20도움이다. 똑같은 값이 나온다 __init__ 함수를 사용하는 이유는 간단하다 좀더 간략하게 나타내게 위해서다.

4. 클래스의 상속 


class player(liverpool):
def rank

key = player("밀너")
key.gp(5, 5)


'''살라는 19시즌 10골 20도움이다.

살라는 19시즌 10골 20도움이다.

밀너는 19시즌 5골 5도움이다. '''

# class 이름(상속받을클래스이름)
똑같이 key 값에 연결을해줘서 작성을 하면 liverpool 클래스에서 상속을 해준다.


5. 클래스의 활용 - 매서드 오버라이딩과 연산자 오버로딩  Tip: 오버라이딩은"메소드의 재정의" 오버로딩은 "메소드의 중복정의" 이다.

# 매서드 오버라이딩
class player(liverpool):
def gp(self, goal, assist, rank):
self.goal = goal
self.assist = assist
self.rank = rank
print("%s는 19시즌 %d골 %d도움이다. 리버풀은 %d위 이다. " % (self.name, self.goal, self.assist, self.rank))

key = player("밀너")
key.gp(5, 5, 4)

'''살라는 19시즌 10골 20도움이다.
살라는 19시즌 10골 20도움이다.
밀너는 19시즌 5골 5도움이다. 리버풀은 4위 이다.'''

 매서드 오버라이딩은 쉽게말해서 전내용에 위 내용을 더하는 클래스의 활용 방법이다 



# Python # 파이썬 # 초보개발자의 웹노트 # 리버풀 # 공부 # python 클래스 #__init__