TIL - 27 python - repl.it 복습2, class - 1

이동근·2021년 1월 16일
0

python

목록 보기
13/18

객체 지향 프로그래밍(modeling, 모델링)이란?

프로그램을 여러개의 독립된 객체들과 그 객체들 간의 상호 작용으로 파악하는 프로그래밍 접근법, 프로그램을 객체들과 객체들간의 소통으로 바라보는것
1. 프로그램에 어떤 객체들이 필요할지를 정한다.
2. 객체들의 속성과 행동을 정한다.
3. 객체들이 서로 어떻게 소통할지 정해야 한다.

class

왜 우리는 class를 공부해야 하는가?

class는 지금까지 공부한 함수나 자료형처럼 프로그램 작성르 위해 꼭 필요한 요소는 아니다.
but!!!!!!!!!!!!!!!!!!!!!!!!!
프로그램을 작성할때 클래스를 적재적소에 사용하면 얻을 수 이익은 상당하다.

class란 똑같은 무엇인가를 계속해서 마늘어 낼 수 있는 설계 도면이고, 객체란 클리스로 만든 피조물을 뜻한다.
예를 들어
과자틀 - > class
과자틀을 이용해 만든 과자 - > 객체(object)이다.

※ 객체(object)는 속성(attibute) 와 행동으로 이루어진 존재이다. 자동차라는 객체는 빨간색, 기계라는 속성과, 어딘가를 향해 나아가는 행동으로 이루어져있다.
다른 예를 보면 instagram 유저객체

  • 속성 : 이메일주소, 비밀번호, 친구목록
  • 행동 : 친구추가 좋아요 누르기

다시말해서 무엇이든 객체가 될 수 있다. 현실에 있던, 가상으로 존재하던 상관없이 속성과 행동을 떠올릴 수 있다면 객체라고 할 수 있다.

class 선언

class User: -> 클래스를 선언하는 부분이다. 여기서 클래스명인 User은 대문자로 적어주어야 한다.

중요

user1 = User()
이 코드를 보게 되면
user1 은 객체 이다. User라는 클래스(=붕어빵 틀)에서 user1(붕어빵)이 나왔다 user1은 객체이다.
그리고 user1 은 User의 인스턴스이다.
인스턴스는 객체와 class 사이의 관계 위주로 설명할 때 사용한다.

정리 하면
User는 class이고
user1는 객체이다.
user1은 class의 인스턴스이다.

한 가지 더!!

user1, user2, user3 인 객체는 똑같은 class로 만들어졌지만 각 각 모두 다르다. 연관되어있지않고 모두 다 다른 놈들 이다.

클래스 만들기!

클래스를 어떻게 만들까?

클래스를 무작정 만들기 보다는 클래스로 만든 객체를 중심으로 어떤식으로 동작하게 할 것인지 미리 구상을 한 후에 생각한 것들을 하나씩 해결하면서 완성해 나가는 것이 좋다.

class User: 클래스 선언, 클래스명은 대문자로 다음줄로 들어가게 되면 자동으로 들여쓰기가 된다.

인스턴스 변수

인스턴스 자체가 가지고 있는 변수를 인스턴스 변수라고 한다.
인스턴스이름.속성이름(인스턴스 변수) = "속성에 넣을 값
ex)
user1.name = "이동근"
user1.email = " eagle5424@velog.kr"
user1.password = "1234"

여기서 user1.name, user1.email, user1.pssword를 인스턴스 변수라고 한다.

없는 인스턴스 변수를 출력하면 오류가 뜨니까 조심
인스턴스 변수를 사용하려먼 꼭 그전에 미리 정의해 놔야 한다.

객체속성 = 변수, 행동 = 메소드

메소드
클래스 내에서 선언한 함수를 의미

메소드의 종류

  1. 인스턴스 메소드
  2. 클래스 메소드
  3. 정적메소드

1. 인스턴스 메소드

인스턴스 변수를 사용하거나 인스턴스 변수에 값을 설정하는 메소드

인스턴스 메소드의 특별한 규칙

클래스이름.메소드이름(인스턴스)
인스턴스이름.메소드이름()
ex)
User클래스 안에 login 이라는 메소드가 있다.
User.login(user1)
user1.login()

이렇게 작성할 수 있다.

그럼 여러개의 파라미터를 받게 되는 경우에느 어떻게 될까?

위의 사진을 보게 되면 여러개의 파라미터를 받고 있는데

user1 = User() 인스턴스 해주고

user1.name = "이동근"
user1.email = "eagle5424@velog.kr"
user1.password = "1234"

이렇게 인스턴스 변수 설정 해주고
user1.login(user1, "eagle5424@velog.kr","1234567") 이렇게 파라미터의 갯수 대로 해주게되면?

오류가 뜨게 된다.
왤까?

오류메세지를 보면 3개인데 4개가 입력되있다고 되어있다.
이렇게 인스턴스이름.메소드 형식으로 적어주게 되면, 자동으로 첫번째 파라미터에 인스턴스에 대응이 되게 된다. 그래서 user1을 굳이 적어줄 필요가 없다.

오류 수정!!

첫번째 파라미터에 user1을 제거해 보았다.


정상적으로 작동했다.

profile
하루하루 1cm 자라는 개발자

0개의 댓글