컴퓨터/파이썬

파이썬(Python) - Class ①

해피밀세트 2020. 4. 6. 18:34

 

 

절차(구조적) 지향 프로그램(procedural language)

  • C, R, plsql
  • 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며
    프로그램
    전체가 유기적으로 연결되도록 만드는 프로그램밍 기법이다.
  • 반복되는 코드는 함수를 만들어서 사용
  • 단점 :
        -
    재사용할 없다.
        -
    확장성이 떨어진다.
        -
    유지보수가 어렵다.

 

객체 지향 프로그램(Object Oriented Language, OOP)

  • JAVA, C++, C#, Python
  • 구조적 프로그래밍과 다르게 문제를 작은 문제들로 해결할 있는 객체들을 만든
    객체들을 조합해서 문제를 해결하는 방법
  • 객체 : 사물 개념중에 명사로 표현할 있는 것을 의미한다.
  • 클래스 : 객체를 설명해 놓은 (객체의 설계도)
  • 인스턴스 : 클래스를 메모리에 만들어서 사용하도록 하는 의미

 

객체 = 속성 + 메소드

속성(변수) : 값을 표현해서 저장하는 공간

메소드 : 함수, 기능의 프로그램

 


class

 

1. 기본 사용법

class 클래스이름 :
    def 함수이름(인수이름):
        함수식

# 클래스 생성
class test:
    def txt(self,arg):
        return "좋아하는 음식 :"+ arg

 
인스턴스 만들기
test1 = test()
 
인스턴스 사용
test1.txt('주먹밥')
test2 = test()
test2.txt('스콘')

# class 삭제
del test

 

 

 

2. 초기 생성자 사용하기

def __init__(self) : 
  - 초기 생성자
  - 인스턴스를 만들때 제일 먼저 수행되는 생성자(필수아님)
  - 클래스를 인스턴스화 할때 자동으로 초기화 해주는 메소드

  - 초기 생성자 안에 있으면 인스턴스변수도 되고 클래스 변수도 된다.

class 클래스이름:
    def __init__(self): 
        함수식

# 초기 생성자를 사용한 클래스 생성
class Show:
    def __init__(self): 
        print("개미는 오늘도 열심히 일을 하네")
s = Show()
# 초기 생성자를 만들지 않아도 오류 안남
class Show1:
    pass
s = Show1()
 

초기 생성자로 변수선언
class Calculator:
    def __init__(self):
        self.result = 0
    def add(self,num):
        self.result += num
        return self.result

cal1 = Calculator()
cal1.add(2)
cal1.add(4)

초기 생성자로 번수선언하지 않았을때
class Calculator:
    def add(self,num):
        self.result = 0
        self.result += num
        return self.result

cal1 = Calculator()
cal1.add(2)
cal1.add(4)

# 초기 생성자 안에 있으면 인스턴스변수도 되고 클래스 변수도 된다.
# 변수가 문자형일때

class Travel :
    country = ""      
    def __init__(self, arg):
        self.country += arg

t1 = Travel("한국")
t1.country

t2 = Travel("미국")
t2.country

 

Travel.country

Travel.country += "한국"
Travel.country

 

Travel.country += "미국"
Travel.country

 

Travel.country

# 초기 생성자 안에 있으면 인스턴스변수도 되고 클래스 변수도 된다.
# 변수가 리스트형일때

class Travel :
    country = []     
    def __init__(self, arg):
        self.country.append(arg)

t1 = Travel("한국")
t1.country

t2 = Travel("미국")
t2.country


Travel.country

Travel.country.append("중국")
Travel.country

 

Travel.country.append("영국")
Travel.country

 

Travel.country

 

 

3. self 인수

self :

  - 자기 자신의 인스턴스를 의미한다.

  - 이 인스터스에 있는 속성만 사용하겠다.(로컬 개념)

class Menu:
    name = '아메리카노'
    price = 2500
    def MenuPrint(self):  
        print("이름은 {}".format(self.name))
        print("가격은 {}".format(self.price))

# 인스턴스 생성
m1 = Menu()

m1.MenuPrint()
m1.name = '카페라떼'
m1.price = 3000
m1.MenuPrint()
m2 = Menu()
m2.MenuPrint()
m1.store = '바나프레소'
m1.MenuPrint()
print(m1.store)

 

 

4. 집계값 더하고 빼기

def __del__(self) : 인스턴스를 삭제하면 무조건 수행

class Country :
    count = 0
    def __init__(self,arg1,arg2): 
        self.name = arg1
        self.city = arg2
        Country.count += 1
    def show(self):
        print("국가 :", self.name,"\t","도시 :", self.city)
    def con_count(self):
        print("전체 국가 수는 %d"%Country.count)

con1 = Country("한국","서울")
con1.show()
con1.con_count()

 

con2 = Country("미국","워싱턴")
con2.show()
con2.con_count()

# 인스턴스를 삭제해도 전체 국가수는 줄어들지 않는다.
del con2

con1.show()
con1.con_count()
class Country :
    count = 0
    def __init__(self,arg1,arg2): 
        self.name = arg1
        self.city = arg2
        Country.count += 1
    def show(self):
        print("국가 :", self.name,"\t","도시 :", self.city)
    def con_count(self):
        print("전체 국가수는 %d"%Country.count)
    def __del__(self) :
        Country.count -= 1

con1 = Country("한국","서울")
con1.show()
con1.con_count()

 

con2 = Country("미국","워싱턴")
con2.show()
con2.con_count()

# 인스턴스를 삭제하면 전체 국가수가 줄어든다. 
del con2

con1.show()
con1.con_count()
반응형