ursobad
ursobad
ursobad
전체 방문자
오늘
어제
  • 분류 전체보기 (116)
    • Emotion (35)
      • 파이썬 (10)
      • 문제 (10)
      • 인공지능 기초 (15)
    • Best of the Best (3)
    • Hacking (58)
      • HackCTF (12)
      • DreamHACK (7)
      • Webhacking.kr (19)
      • Root Me (6)
      • HTB (5)
      • 기타 (7)
      • 리버싱 소수전공 (2)
    • 기능반 (16)
      • 2과제 (14)
      • 3과제 (2)
    • 기록 (3)
    • 짧은 글들 (0)
    • 기타 (1)
    • Zombie (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BoB 면접
  • KNN
  • 의사결정트리
  • BoB 11기
  • BoB 자소서
  • 앙상블
  • OpenCV
  • 123
  • BoB 질문
  • BoB 필기
  • 구독자 전용 다시보기
  • Bob
  • 함수
  • 머신러닝
  • 파이썬
  • Python
  • BoB 자기소개
  • 백준
  • BoB 자기소개서
  • 얼굴검출

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ursobad

ursobad

Emotion/파이썬

클래스_1

2020. 9. 1. 17:25

클래스란?

- 객체를 표현하기 위한 문법

객체란?

- 객체는 어떠한 속성값과 행동을 가지고 있는 데이터입니다.

메서드란?

- 클래스 안에서 사용하는 함수

클래스 구조

class 이름: def 메서드(self): 코드

ex)

class Person: def hi(self): print("Hello") sunrin = Person() sunrin.hi() 

Person이라는 클래스 안에 hi라는 메서드를 만들었다.
그리고 "인스턴스 = 클래스()"의 구조로 Person의 인스턴스를 만들어 주고 "인스턴스.메서드"의 구조로 hi라는 메서드를 호출해준다.
=>인스턴스를 통해 호출하는 메서드를 인스턴스 메서드라고 한다.

##인스턴스란 객체 지향 프로그래밍에서 인스턴스는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다.

type을 이용하여 객체의 클래스를 확인 할 수 있다.

class Person: def hi(self): print("Hello") sunrin = Person() print(type(sunrin)) --출력-- <class '__main__.Person'>

속성 사용하기

구조

class 이름: def __init__(self): self.속성 = 값


ex)

class Person: def __init__(self): self.hello = '안녕하세요' def hi(self): print(self.hello) sunrin = Person() sunrin.hi() --출력-- 안녕하세요

hi메서드에서 print로 self.hello를 출력 -> Person클래스로 인스턴스 만듦 -> hi메서드 호출 -> self.hello에 저장된 값 출력

self는 인스턴스 자기자신을 의미한다.

인스턴스 만들때 값 받기

구조

class 이름: def __init__(self, 매개변수1, 매개변수2, ...): self.속성1 = 매개변수1 self.속성2 = 매개변수2 인스턴스 = 클래스(매개변수1, 매개변수2...)


ex)

class Person: def __init__(self, name, age, add): self.hello = 'Hello' self.name = name self.age = age self.add = add def hi(self): print("{0} 저는 {1}입니다".format(self.hello, self.name)) sunrin = Person('sunrin', 20, '서울시') sunrin.hi() print("이름 :",sunrin.name) print("나이 :",sunrin.age) print("주소 :",sunrin.add) --출력-- Hello 저는 sunrin입니다 이름 : sunrin 나이 : 20 주소 : 서울시

__init__메서드에 self다음에 매개 변수를 저장한다.
메서드 안에서는 self.name = name처럼 매개변수를 그대로 self에 넣어서 속성으로 만든다.

비공개 속성

- 클래스 바깥에서는 접근할 수 없고 클래스 안에서만 접근할 수 있다.

구조

class 이름: def __init__(self): self.__속성 = 값


ex)

class Person: def __init__(self, name, age, add, wallet): self.name = name self.age = age self.add = add self.__wallet = wallet #비공개 속성 def pay(self, amount): self.__wallet -= amount print("이제 {}원 남았네요".format(self.__wallet)) sunrin = Person('sunrin', 20, '서울시', 10000) sunrin.pay(3000) --출력-- 이제 7000원 남았네요


메서드도 이름이 __로 시작하면 클래스 안에서만 호출할수 있는 비공개 메서드가 된다.

클래스 속성

class 이름: 속성 = 값


ex)

class Item: bag = [] def put_bag(self, stuff): self.bag.append(stuff) sunrin = Item() sunrin.put_bag('책') james = Item() james.put_bag('열쇠') print(sunrin.bag) print(james.bag) --출력-- ['책', '열쇠'] ['책', '열쇠']

클래스 속성은 모든 인스턴스와 공유한다는 것을 알 수 있다.
위의 클래스를 인스턴스 속성을 이용하여 분리해 줄 수 있다,

인스턴스 속성

class Item: def __init__(self): self.bag = [] def put_bag(self, stuff): self.bag.append(stuff) sunrin = Item() sunrin.put_bag('책') james = Item() james.put_bag('열쇠') print(sunrin.bag) print(james.bag) --출력-- ['책'] ['열쇠']

인스턴스 속성은 인스턴스별로 독립되어 잇어서 서로에게 영향을 주지 않는다.

정적 메서드

구조

class 이름: @staticmethod def 메서드(매개변수1, 매개변수2): 코드 클래스.메서드()

메서드 위에 @staticmeth를 쓴다.

ex)

class Calc: @staticmethod def add(a,b): print(a+b) @staticmethod def mul(a,b): print(a*b) Calc.add(10,20) Calc.mul(10,20) --출력-- 30 200

정적 메서드는 self를 받지 않음으로 인스턴스 속성에 접근할 수 없다
보통 인스턴스 속성, 인스턴스 메서스가 필요하지 않을때 사용한다.

클래스 메서드

구조

class 이름: @classmethod def 메서드(cls, 매개변수1, 매개변수2): 코드

메서드 위에 @classmethod를 쓴다.

ex)

class Person: cnt = 0 #클래스 속성 def __init__(self): Person.cnt += 1 #인스턴스가 만들어질때마다 클래스속성 cnt에 1을 더함 @classmethod def print_cnt(cls): print("{}명 생성되었습니다".format(cls.cnt)) #cls로 클래스 속성에 접근한다 sunrin = Person() maria = Person() james = Person() Person.print_cnt() --출력-- 3명 생성되었습니다

'Emotion > 파이썬' 카테고리의 다른 글

예외처리  (0) 2020.09.04
클래스_2  (0) 2020.09.02
함수_2  (0) 2020.08.26
파이썬 함수_1  (0) 2020.07.08
파이썬 반복문  (0) 2020.07.07
    'Emotion/파이썬' 카테고리의 다른 글
    • 예외처리
    • 클래스_2
    • 함수_2
    • 파이썬 함수_1
    ursobad
    ursobad

    티스토리툴바