본문 바로가기
Service/Coding

Object Oriented Programming 다시

by 포항돼지 2022. 1. 26.

클래스  : 함수 , 변수들의

오브젝트 : 클래스를 이용해서 만들어낸 물체

 

클래스 == 만들

오브젝트(인스턴스) ==

 

 

이렇게 먼저 빵 틀을 만들고
p라는 오브젝트 만들고 그게 person() 클래스를 받아온다고 빵틀안에 p라는 반죽을 넣는 거임

 

그 다음 그 p로 만들어진 반죽을 이제 빵틀안에 들어있는 여러가지 모양이나 맛을 이용해서 맛있는 나만의 오브젝트를 만드는 개념
이제 이 self라는 인자, self는 그 만들어진 오브젝트를 가르키는 거임

self.name = name이라는 이미 만들어진 변수를 불러와서 self 오브젝트 안에 넣는 것

 

사람 3명을 예로 들어보자

각각의 이름들을 받아와서 나는 누구누구다 라는 프로그램을 짜고 싶을때

이렇게 코딩해버리면 그냥 
이렇게 밖에 안나온다. 왜? name = "wayne" 이라고 변수를 지정 해놧으니까

name 이라는 변수를 , person() object를 만들때 할당하고싶으면 여기서 __init__ 함수를 써야함

__init__함수는 self를 첫 인자로 받고 그다음 새로쓸 변수들을 설정 해줄수 있다

이렇게 __init__ 함수에 self,랑 받아올 변수 (name)을 넣고, 그 안에 self.name = name이라고 변수를 지정해주면, person() class빵틀의 오브젝트를 만들때, 내 맘대로 변수, 앙금 넣을수 있다는 것
__init__을 쓴뒤로 객체를 받아 올수 있게 되기 때문에, 스트링으로 이름 넣으면 init안의 name, 즉 self.name = name 변수안에 "wayne" 및 다른 이름들이 들어감
이렇게 나옴
def, function 에다가 값 넣어서 이렇게 사용도 가능하다

즉 미리 만들어진 person() 이라는 클래스에 , 객체를 만들때 __init__ 함수를 써서, 값을 받아오고, 그 값을 통해 이제 person() 안에 종속된 오브젝트가 아무 def나 쓸수 있는데, 그 def에도 값을 넣어서 다르게 가공이 가능하다는 뜻.

 

__init__ 은 initialize에서 온 것

person() 이라는 오브젝트를 만들때, name이라는 변수를 받아서, name 안에 그 값을 넣어라 라는 뜻

 

참고로 문자열 -> int , int -> string 바꾸는걸 casting 이라고 함

 

내가 만들어본 Car class definition coding

 

다른 예 한번 만들어 봤음

 

 

Inheritance (상속)

상속은 공통된 클래스가 하나있고, 그 밑에 쬐끔 다른 클래스를 새로 만들고 싶을때 씀

 

위와같이, Wayne, Ji, Joshua 모두 직업이 다름으로, 각각 할수 있는게 다르다. 이럴경우, class 안에 inheritance 해가지고 분류 해서 다르게 print out 가능

이렇게 class 를 만들때 function 괄호 안에 그 종속 시키고 싶은 클래스를 쓰면 됨
이렇게 하니까 에러뜸...;

왜? person class에는 종속이 되어 있으니까, 그 밑에 종속된 class 에 person 값을 넣어줘야 제대로 작동함

 

이렇게 해야 된다는 거
제대로 출력 되는 걸 볼 수 있음.

즉 person(): 클래스 넣고 그 밑에 종속 된 클래스 안에 person 값을 넣어야, 제대로 그 inheritanced 된 class 가 동작 하는 것. person(): 에다가만 value 를 넣으면, inheritance 된 값에 value 가 안들어가서 에러가 나는 것임

= 무조건 젤 밑에 있는거 기준

 

그리고 상속 된 class 는 자동으로 상속 하게 된 class의 def, fuction들을 모두 쓸 수 있음.

즉, 상속을 안하는 방식으로 가고싶다? 그러면 그 클래스 하나에다가 person()에 들어있는 def 및 모든 벨류를 쓰면 고대로 작동 한다는 말임

 

 

 

 

 

 

'Service > Coding' 카테고리의 다른 글

Google Python Automation Certification - Week 2  (0) 2022.02.01
Google Python Automation Certification - Week 1  (0) 2022.02.01
코딩 1시간 워니 - 3  (0) 2021.12.27
코딩 1시간 워니 - 2  (0) 2021.12.26
코딩 1시간 워니 - 1  (0) 2021.12.10