큐범
Just do debug
큐범
전체 방문자
오늘
어제
  • 전체보기 (132)
    • 회고 (4)
    • JAVA (16)
      • JAVA 기초 (18)
      • JAVA Algorithm, Datastruct (13)
    • Spring (11)
    • Micro Service Architecture (3)
    • JPA (6)
    • gRPC (4)
    • Network (8)
    • Process (7)
    • Cloud (4)
    • Python (10)
    • Web(vue) (2)
    • UMC (1)
    • DB (9)
    • CS (5)
    • Clean Code (1)
    • TDD (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
큐범

Just do debug

Python

[python] 파이썬 클래스 정리

2021. 7. 4. 16:34

Life is too short, You need python

파이썬 프로그래밍의 핵심, 클래스


C언어에는 클래스가 없다. 즉, C언어는 클래스가 없어도 프로그램을 충분히 만들 수 있으나 요즘 새롭게 등장하는 언어들은 클래스를 포함하고 있다. 객체지향언어의 최대 장점 클래스에 대해서 포스팅을 하겠다.

​

result=0

​

def adder(num):

global result

result +=num

return result

계산기의 더하기기능을 구현한 것이다.

그런데 만약 계산기가 2개 필요할 경우 각각의 계산기는 각각의 결과값을 유지해야하기 때문에 위와 같이

adder함수 하나만으로는 부족하다.

result1=0

result2=0

​

def adder1(num):

global result1

result1 += num

return result1

def adder2(num):

global result2

result2 += num

return result2

따라서 이렇게 계산기1의 결과값이 계산기2에 아무런 영향을 끼치지 않음을 학인할 수 있으나

계산기가 꼭 2개가 필요한 경우만 존재하는 것은 아니다. 또한 늘어날 때 마다 함수를 추가하고 전역변수를 선언할 수는 없다. 10개를 넘어 무수히 많은 계산기능이 필요한 경우는 존재한다.

그런 경우 클래스를 통해 쉽게 해결할 수 있다.

class Calculator:

def __init__(self):

self.result=0

​

def adder(self,num):

self.result+=num

return self.result

cal1=Calculator()

cal2=Calculator()

​

print(cal1.adder(3))

print(cal1.adder(4))

print(cal2.adder(3))

print(cal2.adder(7))

>>>3

7

3

10

클래스 : 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면 같은 것이라고 생각하면되고

인스턴스 : 클래스에 의해서 만들어진 산출물이라고 생각하면 된다.

class simple: #클래스 생성

pass

a=simple() #인스턴스 생성

​

두번째 예

class Service:

secret="영구는 두개"

def __init__(self,name): #인스턴스를 만들때 항상 실행된다.

self.name=name

def sum(self,a,b):

result=a+b

print("%s님 %s+%s=%s입니다."%(self.name,a,b,result))

​

pey=Service("홍길동")

pey.sum(1,1)

​

여기서 pey=Service("홍길동") 를 통해 class Service를 실행해서 함수에 값까지 입력을 했다.

__init__은 클래스를 실행할때 필수적으로 입력을 해야하는 값이다. 즉, "인스턴스를 만들 때 항상 실행된다."

따라서 def __init__(self,name) self=pey, name=홍길동이 입력이 된다.

여기서 self는 ID로 생각해두면 될거같다. Service안에 있는 함수를 사용할때 이 클래스에 선언된 것이 있는지 확인할때 self가 요구된다. 따라서 class의 함수를 사용하기 위해서는 self가 필수적이다.

​

클래스의 구조

class 클래스 이름[(상속 클래스명)]:

<클래스 변수 1>

<클래스 변수 2>

...

<클래스 변수 N>

def 클래스 함수1(self,[인수1,인수2,,,,])

<수행할 문장1>

<수행할 문장2>

....

def 클래스 함수2(self,[인수1,인수2,,,,])

<수행할 문장1>

<수행할 문장2>

....

def 클래스 함수N(self,[인수1,인수2,,,,])

<수행할 문장1>

<수행할 문장2>

....

....

​

클래스를 만들기 전에는 어떻게 만들 것인지 구상하는 것이 좋다.

세번째 예시

사칙연산을 하기위한 클래스

사칙연산을 하려면 두 숫자를 받아야한다.

더하기, 빼기, 곱하기, 나누기 기능을 가진 클래스 구현

class FourCal():

def setdata(self,first,second):

self.first=first

self.second=second

def sum(self):

result=self.first+self.second

return result

def sub(self):

result=self.first-self.second

return result

def div(self):

result=self.first/self.second

return result

def mul(self):

result=self.first*self.second

return result

​

a=FourCal()

a.setdata(4,2) FourCal.setdata(a,4,2)로도 호출 가능

print(a.first)

>>>4

print(a.second)

>>>2

print(a.sum())

>>>6

print(round(a.div()))

print(a.mul())

print(a.sub())

이와같이 a변수에 FourCal클래스를 호출하고 a.setdata로 first,second데이터의 변수를 저정하며

사칙연산을 실행한다.

    'Python' 카테고리의 다른 글
    • [python] 파이썬 내장함수 정리
    • [python] 파이썬 예외처리 정리
    • [python] 파이썬 함수 정리
    • [python] 파이썬 제어문 정리
    큐범
    큐범

    티스토리툴바