본문 바로가기

Python/Python

[Python] Class와 Object 개념과 이해

반응형

파이썬을 처음 접할 때는 그렇게 어렵다고 느껴지지 않았지만 클래스와 객체 단계만 다가오면 머리가 하얘지고

무슨 말인지 도통 몰랐다.. 심지어 패스트캠퍼스의 강의를 들었음에도 불구하고....

 

그런데 코딩 유투버를 보다가 '워니' 라는 사람의 영상을 접하게 되었고 설명하는 방식이 이해하기 쉬운 것 같아

인상깊었던 와중에 1시간 분량의 파이썬 정복기라는 엑기스 영상을 올린걸 보게 되었다. 그리고 시청 후 소감은

정말 설명을 잘해주셨고 드디어 클래스와 객체에 대해서 이해가 많이 된 느낌을 받았다. 

 

하지만 이 느낌도 곧 까먹게 될 것 같다... 사라지기 전에 빨리 이제 복습해보자!

클래스와 객체

우선 클래스 속에 객체가 있다고 볼 수 있겠다. class를 정의해주고 그 안에 임의의 함수를 만들어 준다.

그리고 __init__의 함수에 self인자와 person 클래스를 불러올때 넣어줄 name, age인자를 넣어준다.

그리고 self.name과 self.age 인스턴스를 만들어준다. 

또 다른 임의의함수로 say_hello 함수를 만들고 인자에 to_name이라는( 즉, say_hello() 에서 소괄호 안에 들어갈 인자) 

인자를 넣어준다. 그리고 다음 함수인 introduce 함수는 해당 함수를 불러올 때 인자는 필요 없지만 출력값에 위 __init__함수 에서 써준 인스턴스들을 이용한다.

 

Class 상속

다음은 클래스의 상속이다. 어떻게 보면 class 자체를 이해하게 되면 이 단계는 좀 수월할 수 있을 것이다. 우선

police라는 클래스에 person 클래스를 소괄호에 넣어 상속시켜준다. 그리고 arrest라는 함수를 만들어 to_arrest인자를

넣어 준다. 또 새로운 programmer 클래스에 person 클래스를 상속시켜주고 to_program이라는 인자를 넣어준다.

즉, 이렇게 상속시킨다면 police클래스를 불러올때 즉, 

>>> a = police('영훈', 26 )

이렇게 class를 불러온다면 '영훈', 26은 person 클래스의 인자이므로 저런식으로 넣어주면 된다(...사실 내가 적으면서도 이해가 갈지는 모르겠지만...ㅜㅜ 이해가 되면 뭔가 이런식으로 표현이 된다...)

 

결과 출력 창

그래서 위 코드를 기반으로 해서 우선 임의의 3가지이름을 부여했다. wonie는 상속클래스가 아닌 그냥 person클래스에, 

jennypolice 상속 클래스에, michaelprogrammer 상속클래스에 할당시키고 인자는 모두 person 클래스 속의 __init__함수 인자를 넣어준다. 

 

그리고 wone.introduce() 함수를 실행시켜 person 클래스 속 introduce 함수에 대한 내용을 출력시킨다. 

jenny.arrest('워니') 에서는 '워니' 라는 to_arrest에 해당하는 인자를 넣어준다.

michael.program('토이프로젝트') 에서는 '토이프로젝트' 라는 to_program에 해당하는 인자를 넣어준다.

 

단, 여기서 주의할 점은 만약 위 상황에서 jenny.program('토이프로젝트') 라고 명령하면 에러가 뜰 것이다. 왜냐하면

jenny는 애초에 police라는 클래스에 할당됬기 때문에 program이라는 함수는  police클래스에 들어가 있지 않기 떄문이다. 따라서 말하고자 하는 바는 해당 클래스에 내가 쓰고자 하는 함수가 들어가 있는지 아닌지 여부를 잘 판단해야 한다는 의미이다! 

 

참고강의:

https://www.youtube.com/watch?v=M6kQTpIqpLs&t=657s

 

반응형