Python 기초08

Doya·2025년 2월 14일

ESTSOFT_AI개발7기

목록 보기
9/43

개요

  • 클래스: 객체와 인스턴스
  • List의 축약

객체 지향 프로래밍

절차적 프로그래밍(Procedural Programming)

  • Procedure(프로시저)를 이용하여 작성하는 프로그래밍
  • 순자적인 처리를 중요시 여김
  • 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법
  • 대표적 절차적 프로그래밍: C,Basic, Fortran 등이 있음
    • 순차적 프로그래밍이랑 절차적 프로그래밍은 다른 개념

Procedure

  • 어떤 프로세스를 절차적으로 기술해 놓은 것
  • 프로그램 목표를 수행하기 위한 일련의 작업이자 순서

객체 지향 프로래밍(OOP; Object Oriented Progreaming)

  • 객체를 중심으로 프로그램을 설계하고 개발하는 프로그래밍 패러다임
  • 프로그램을 실제 세상에 가깝게 모델링하는 기법
  • 대표적인 객체 지향 언어: python, java, c++, c# 등

클래스

1. Class

  • 프로그램 상에서 사용되는 속성과 행위를 모아놓은 집합체
  • 객체의 설계도 혹은 형틀

2. Instance

  • 클래스로 부터 만들어지는 각각의 개별적인 객체
  • 서로 다른 인스턴스는 서로 다른 속성 값을 가질 수 있음

3. 객체(Object)

  • 물리적으로 존재하거나 추상적으로 생각 할 수 있는 것 중 자신의 속성을 가지고 있으면서 식별이 가능한 것
  • 속성과 메소드를 갖고 있음

객체와 인스턴스

객체는 어떤 행위의 대상이 될 수 있는 모든 사물
인스턴스는 클래스라는 추상적 틀에 만들어진 사물

class Cake:
	print....
a = Cake()

a = Cake()에서 a는 객체이며 a 객체는 Cookie의 인스턴스
인스턴스는 어떤 클래스(Cake)의 어떤 객체(a)인지 관계 위주로 설명할 때 사용
즉 a는 객체, a는 Cake에 대한 인스턴스

Class의 기본 구조

class Emp:
    name = ''
    def __init__(self, name): #초기화작업=생성자역할
        self.name=name
        print('__init__(self, name) ',name)

    def insert(self):
        print('insert함수=' , self.name)
        
if __name__ == "__main__":
    my = Emp('kim')
    my.insert()  

class에서의 self

  • Class에서의 매개변수 self는 객체 자기 자신을 참조하는 변수
  • 다른 메서드에서 인스턴스 변수에 접근 할 때 사용
  • 클래스 내부에서 객체 자신의 속성을 참조할 때 사용

만약 self없이 변수를 선언한다면?

  • 메서드 내부의 지역 변수가 되어 메서드가 실행 될 때만 존재하고, 다른 메서드에서는 사용할 수 없음

class Emp:
    name = ''
    def __init__(self): 
        pass
        #self.name=name
       
    def printAll(self):
        user = '길동'
        print('printAll함수 ' , user)
        self.name = user
       
    def emp_delete(self):
        print('\nemp_delete함수')
        print('삭제대상이름', self.name)
if __name__ == "__main__":
    my = Emp()
    # my.printAll()
    my.emp_delete()

위의 코드처럼 클래스를 정의하면 my.printAll( )이 실행 되지 않으면 my.printAll( )의 user 변수를 사용할 수 없음

list의 축약 (list comprehension)

  • 리스트에서 for문이나 if문을 한줄로 축약하여 좀더 간결하게 선언 할 수 있음

list comprehension의 문법

    1. 기본적인 문법
      [ {표현식} for {변수} in {리스트} ]
    1. 조건문 추가
      [ {표현식} for {변수} in {리스트} if {조건 표현식} ]
    • 단 이런 경우는 if문만 사용 가능(else, elif는 사용 할 수 없음)
    • if문을 여러번 사용할 수 있음 이때 두 조건문이 and로 연산 됨
    1. 조건문을 앞에 쓰는 경우
      [{표현식} if {조건 표현식} else {표현식} for {변수} in {리스트}]
    • 조건식이 참이면 앞에 있는 표현식으로, 거짓이면 else로 이동함
  • 예시

    # 숫자 제곱 처리 
    for a in range(1, 11,1):
      print(a*a, end = '\t')
    print()
    print('='*100)
    
    for b in range(1, 11, 1):
      print(pow(b,2), end = '\t')
    print()
    print('='*100)
    
    print('제곱처리를 list comprehension처리 ')
    my_list = [c**2 for c in range(1,11)]
    print(my_list)
    print('='*100)
    
    # 짝수만 나오게 하기 
    print([i for i in range(1,11,1) if i%2 == 0])
    print('='*100)
    
    # 
    names = ['kim', 'lee', 'park']
    print([ name.upper() for name in names ])
    

list 축약 실습

message = ['spam', 'ham', 'spam', 'ham', 'spam']
dummy = []
# 축약X 
for i in message:
  if i == 'spam':
    dummy.append(1)
  elif i == 'ham':
    dummy.append(0)

print(dummy)
print()

# 표현식 + for+조건문은 else, elif를 사용 못함 
# print( [i for i in message if i== 'spam' 1 else 0])
print([1 if i == 'spam' else 0   for i in message])
profile
안녕하세요. 도야입니다

0개의 댓글