[python] 파이썬 클래스 python class

2022. 2. 22. 01:30·python
728x90
반응형

1) 클래스란?

클래스를 이용해 프로그래밍하면 데이터를 조작하는 함수를 하나의 묶음으로 관리할 수 있으므로 복잡한 프로그램도 더욱 쉽게 작성할 수 있다.

name="마린"
hp=40
damage=5

tank_name="탱크"
tank_hp=150
tank_damage=35

def attack(name, location , damage):
    print("{0} : {1} 방향으로 적군을 공격 합니다. [공격력 {2}]".format(name,location,damage))
    
attack(name, "1시", damage)
attack(tank_name, "1시", tank_damage)

매번 이런식으로 name, hp, damage 를 입력할 수 없으니 class를 이용하여 더욱 쉽게 할 수 있다.

​

1-1) 클래스 기초

명함을 구성하는 데이터를 생각해보면 명함에는 ,이름 , 이메일, 주소라는 값이 포함되어 있음.

명함과 관련된 함수를 생각해보면 기본 명함을 출력하는 함수, 고급 명함을 출력하는 함수가 있음

​

명함을 구성하는 데이터, 명함과 관련된 함수를 묶어서

명함이라는 새로운 객체(타입)를 만들고 이를 사용해 프로그래밍하는 방식=> 객체지향 프로그래밍

데이터(name,email,address)
함수( 기본명함출력함수, 고급명함출력함수)

 

1-2) 클래스 정의

클래스의 목적: 변수와 함수를 묶어서 하나의 새로운 객체(타입)으로 만드는 것

클래스: 붕어빵 틀

인스턴스: 붕어빵 틀에 반죽을 넣어 만들어진 붕어빵

​

1-3) 클래스에 메서드 추가하기

메서드: 클래스 내부에 정의돼있는 함수(set_info)

class BusinessCard:
    def set_info(self, name, email, addr): # 메서드: set_info
        self.name = name
        self.email = email
        self.addr = addr

member1 = BusinessCard() # member1 : 인스턴스 (객체)
member1
 

변수 member1에 객체 BusinessCard 를 담아서 저장한다는 의미. 위의 구문이 실행되면 변수 member1을 이용해서 BusinessCard 객체를 사용할 수 있게 된다. 이렇게 생성된 객체를 인스턴스(instance)라고 부른다. 즉 객체의 설계도를 클래스라고 부르고, 이 설계도를 바탕으로 실제로 사용할 수 있게 만들어진 객체를 인스턴스라고 한다. 이것들을 포괄해서 객체라고 부르기도 한다. 객체라는 말의 의미는 맥락적으로 파악해야 한다.

​

* set_info 메서드를 정의할 때는 self, name, email, addr의 네 개의 인자가 사용됐는데 메서드를 호출할 때는 왜 세 개만(name,email,addr) 사용될까?

클래스를 정의하는 순간에는 우리가 생성할 인스턴스의 이름이 member1인지 다른거 일지 모르기 때문에 self라는 단어를 대신 사용하는 것

​

​

2) 클래스 생성자

class BusinessCard:
    def set_info(self, name, email, addr):
        self.name = name
        self.email = email
        self.addr = addr
    def print_info(self):
        print("--------------------")
        print("Name: ", self.name)
        print("E-mail: ", self.email)
        print("Address: ", self.addr)
        print("--------------------")

member1 = BusinessCard()
member1.set_info("kim", "kim@gmail.com", "USA")
member1.print_info()
--------------------
Name:  kim
E-mail:  kim@gmail.com
Address:  USA
--------------------

 

먼저 인스턴스를 생성한 후 => 생성된 인스턴스에 데이터를 입력

붕어빵에 비유해 보면 붕어빵 틀(클래스)을 이용해 팥소를 넣지 않은 상태로 붕어빵을 구운 후(인스턴스생성) 나중에 다시 붕어빵 안으로 팥소를 넣는 것과 비슷함

​

* 어떻게 하면 클래스 인스턴스 생성과 초깃값 입력을 한 번에 처리할 수 있을까?

​파이썬 클래스에는 인스턴스 생성과 동시에 자동으로 호출되는 메서드인 생성자가 존재한다. 파이썬에서는 __init__(self) 와 같은 이름의 메서드를 생성자라고 하며, 파이썬 클래스에서 __ 로 시작하는 함수는 모두 특별한 메서드를 의미함.

 
class BusinessCard:
    def __init__(self, name, email, addr):
            self.name = name
            self.email = email
            self.addr = addr
    def print_info(self):
            print("--------------------")
            print("Name: ", self.name)
            print("E-mail: ", self.email)
            print("Address: ", self.addr)
            print("--------------------")

member1 = BusinessCard("Kangsan Lee", "kangsan.lee", "USA")
member1.print_info()
--------------------
Name:  Kangsan Lee
E-mail:  kangsan.lee
Address:  USA
--------------------

​

https://wikidocs.net/1076

728x90
반응형

'python' 카테고리의 다른 글

[python] object 형 => numerical 형태로 변경해주는 to_numeric 함수  (0) 2022.03.22
[python] 결정 트리 시각화 Graphviz 설치  (0) 2022.03.20
[python] apply, lammda 함수의 활용  (0) 2022.03.18
[python] 카테고리형(categorical) => 수치형(numerical) 데이터로 변경하는 2가지 방법  (0) 2022.03.18
[python] 데이터 분석할때 필요한 코드 / 함수 정리  (0) 2022.02.20
'python' 카테고리의 다른 글
  • [python] 결정 트리 시각화 Graphviz 설치
  • [python] apply, lammda 함수의 활용
  • [python] 카테고리형(categorical) => 수치형(numerical) 데이터로 변경하는 2가지 방법
  • [python] 데이터 분석할때 필요한 코드 / 함수 정리
ISFP의 블로그
ISFP의 블로그
이건 첫 번째 레슨, 업무에서 마주친 문제 해결 경험 공유하기 이건 두 번째 레슨, 개인적으로 공부한 데이터/AI 지식을 기록하기 이건 세 번째 레슨, 다른 사람과 비교하지 말고 오직 어제의 나와 비교하기
  • ISFP의 블로그
    resultofeffort
    ISFP의 블로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (117)
      • python (25)
      • pythonML (27)
      • Linux (0)
      • 오류Error (8)
      • information (7)
      • Deep learning (5)
      • pytorch (29)
      • 코딩테스트 (4)
      • 밑바닥 DL (4)
      • 논문 리뷰 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    토큰화
    분류
    Pandas
    pytorch
    텍스트전처리
    Deep Learning
    deeplearning
    오블완
    머신러닝
    Python
    konlpy
    nlp
    티스토리챌린지
    데이터분석
    cnn
    machinelearning
    딥러닝
    인공지능
    Ai
    자연어처리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
ISFP의 블로그
[python] 파이썬 클래스 python class
상단으로

티스토리툴바