본문 바로가기

멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차/Python

1/24 월

728x90

월요일입니다! 😁

 

객체지향 프로그래밍
추상화 : 객체를 상태 값(변수; property), 행동(함수; method)으로 표현

 

class는 관련된 속성과 동작을 하나의 범주로 묶어 실세계의 사물을 흉내 낸다.
사물을 분석하여 필요한 속성과 동작을 추출하는 것을 모델링이라고 하며,
모델링된 결과를 클래스로 포장하는 것을 캡슐화라고 한다.

 

__이름__() : magic function

__init__() : instance를 초기화해주는 역할을 수행하므로 initializer라고 함, 자동으로 호출(명시적으로 호출하지 않음)

self : 현재 사용하는 객체를 지칭하는 변수

pass : 수행할 코드가 없음

이렇게 만들어지는 객체를 다른 말로 instance(class를 기반으로 생성된 메모리 공간)라고 함

class는 여러 데이터 타입을 묶어서 하나의 새로운 데이터 타입(ADT; Abstract Data Type)으로 볼 수 있음

class Car(object):
    def __init__(self, car_number, car_price, car_speed): # initializer(인자(매개변수))
#         pass                                              수행할 코드가 없음
        self.car_number = car_number                      # 지역변수(property)
        self.car_price = car_price
        self.car_speed = car_speed
    
    def go_front(self):
        self.car_speed += 10

    def __str__(self):
        return self.car_number
        
car1 = Car('123', 1000, 0)
car2 = Car('456', 2000, 20)

print(car1.car_number)                                    # instance(객체).property, 123
print(car1) # 메모리 주소의 hash 값 출력, __str__ 사용하면 hash 값이 아닌 그 결과를 출력, 123
car1.go_front()
print(car1.car_speed)                                     # 10

class variable : stack에 들어가지 않고 class에 속함, 객체의 상위 버전, class 이름으로 사용할 수 있음
instance variable

class Car(object):
    
    is_speeding = 120                             # class variable
    
    def __init__(self, car_number, car_price, car_speed):
        self.car_number = car_number              # instance variable
        self.car_price = car_price
        self.car_speed = car_speed
    
    def __str__(self):
        return self.car_number
    
    
    def find_speeding(self):
        if self.car_speed > self.is_speeding:
            return '과속이에요!'
        else:
            return '정상속도예요!'
        
car1 = Car('123', 1000, 0)
car2 = Car('456', 2000, 130)

print(car1.is_speeding, Car.is_speeding)           # instance or class.(), 120 120
print(car1.find_speeding(), car2.find_speeding())  # 정상속도예요! 과속이에요!

 

상속(inheritance) : 객체지향을 대표하는 특징 중의 하나, class 계층 구조도

                        parent(upper, super) class의 특징을 이어받아 child(하위, sub) class를 확장해서 생성하는 기법

                        class의 관계가 tightly coupled → 유지·보수가 어려움

 

모든 사용자 정의 class는 object라는 이름의 class를 상속 받음

 

다형성(Polymorphism) : 상속관계가 성립하면 두 개의 class 간에 특별한 관계(IS-A relationship, Sub class is a Super class)가 성립됨

특정 목적을 위해 Super class를 이용해야 하는데, 그 기능을 더 확장한 Sub class로 대치 가능 → Django

class Unit(object):                           # object > Unit > Marine
    
    def __init__(self, life):
        self.life = life
    
    def show_status(self):
        print('생명력 : {}'.format(self.life))

class Marine(Unit):
    
    def __init__(self, life, damage):         # 상위 class의 __init__를 호출
        super(Marine, self).__init__(life)
        self.damage = damage
    
    def show_status(self):
        super(Marine, self).show_status()
        print('공격력 : {}'.format(self.damage))

marine1 = Marine(100, 200)
marine1.show_status()                         # 생명력 : 100 공격력 : 200

 

module : 사용자 정의로 만들 수도 있고 만들어진 걸 사용할 수도 있음, 함수·변수·class를 모아놓은 파일을 지칭함, 확장자명은 .py, 다른 파일에서 사용하기 위해 필요함, 특정 폴더를 module 폴더로 지정하고 그 안에 python module(파일)을 생성하면 가장 쉽게 이용할 수 있음

↑탐색기_내 PC_마우스 우측 클릭_속성 → 고급 시스템 설정 → 시스템 속성_고급 tab_환경 변수 설정을 통해!
시스템 변수 : PYTHONPATH / 값 : C:\python_lib(새로운 폴더 생성 후 시스템 변수 새로 만들어 경로 지정)

import math              # 3.141592653589793
print(math.pi)

import my_module as m    # 사용자 정의 모듈 / as : alias(별칭)
print(my_module.my_var)  # 3.141592
print(m.my_func(10,20))  # 30

from my_module import my_var # from 절을 이용하면 import할 구절을 정할 수 있음
print(my_var)            # 3.141592

from my_module import * # * 이용하면 구절 정하지 않아도 사용가능
print(my_var)            # 3.141592

 

import folderA.folderB.module2 as m2                              # 폴더 안의 모듈 불러오기 '.'
print(folderA.folderB.module2.module2_var); print(m2.module2_var) # 1000 1000

from folderA.folderB import module2
print(module2.module2_var)                                        # 1000

 

1. 1/17 월 2. 1/18 화 3. 1/19 수 4. 1/20 목 5. 1/21 금
취업 특강 파이썬
환경 설정
(파이참, 아나콘다, 주피터 노트북)
파이썬
데이터 타입
(list, tuple)
파이썬
데이터 타입
(range, string, dictionary, set, bool)
파이썬
사용자 정의 함수,
객체지향,
사용자 정의 클래스
6. 1/24 월 7. 1/25 화 8. 1/26 수 9. 1/27 목 10. 1/28 금
파이썬
사용자 정의 클래스,
사용자 정의 모듈
데이터베이스(MySQL)      

* 코테 문제풀이 다시 시작하자!

728x90

'멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차 > Python' 카테고리의 다른 글

1/21 금  (0) 2022.01.22
1/20 목  (0) 2022.01.20
1/19 수  (0) 2022.01.19
1/18 화  (0) 2022.01.18