상세 컨텐츠

본문 제목

누구나 파이썬 -7 (Class 기본 -1 )

개발생활/Python

by 코보소 2020. 2. 12. 23:27

본문

반응형

이전 자료 보기

[개발생활/Python] - 누구나 파이썬 -6 (Module , file I/O , 코딩스타일)

 

누구나 파이썬 -6 (Module , file I/O , 코딩스타일)

이전 자료 보기 [Developer /Python] - 누구나 파이썬 -5(함수 -2 , 리스트 언패킹, 딕셔너리 자료형 , * Asterisk) 누구나 파이썬 -5(함수 -2 , 리스트 언패킹, 딕셔너리 자료형 , * Asterisk) 개요 1. function..

devkoboso.com

 

 

 

 

 

 


목차


 

 

  1. Class 

  2. self

  3. 최상위 스크립트 환경 __name__ 

  4. initialzier (초기자)

 

 

 

 

 

 

 

 

 

 

 


 

1 . 클라스 ? class

 


 

클래스란 무엇인가?

 

현재 까지 연속적인 데이터타입(리스트) , Key값과 대칭되는 딕셔너리, 튜플 과 같은 데이터 타입을 알아보았다. 지금 하는 수준의 프로그래밍에선 위에와 같은 타입으로 충분히 해결가능했다. 추후 중·고급 프로그래밍, API 를 사용하기 위해서 클래스의 개념을 알아야한다.



클래스란 쉽게 이해하기 위해 덩어리, 집합체로 이해하면 좋다.



학생마다 2개의 점수가 있고, 점수 출력을 자동으로 구해주는 프로그램이 필요하다. 



현재까지 배운내용을 이용해 해결하려고 한다면,  학생마다 리스트, 출력을 해주는 함수 이용하여 반복적인 작업을 진행해야 할수도 있다.

 

하지만 클래스를 이용하면 Students클래스에  출력해주는 함수 와 데이터를 저장할수 있는 만든뒤 사용할수 있다.

 

클래스를 정의하는 방법은 아래와 같다.

 

 

클래스 정의 방법

 

 

class Student :
   def __init__(self,a,b):
       self.math = a
       self.eng = b
       
       #변수 선언할 필요 없음!  클래스내부에서 사용될이름
       # math, eng 이름을 사용하면 된다.
       #math, eng 변수는 내가 맘대로 만드는 변수이름이다.
              
        
   def printData(self):
        print('Students math ={0},kor={1}'.format(self.math,self.kor))

클래스의 정의를 보면서 설명하도록 하겠습니다.

 

Student 클래스에는 

2개의 변수와 2개의 함수로 구성되어있습니다.

 

변수의 명과 함수의 명을 보게된다면 Student 클래스의 구성이 어떤식으로 되어있고, 어떤 매서드가 존재하는지 확인할수있습니다.

 

클래스를선언하여 사용하는 방법은 아래와 같습니다.

 

 

 

클래스 선언 방법

import sys

class Student :
   def __init__(self,a,b):
        self.math = a
        self.kor = b
        
   def printData(self):
        print('Students math ={0},kor={1}'.format(self.math,self.kor))
     

def main():
    std = Student(10,30)    
    std.printData()
	
	
	
if __name__ == "__main__":
    main()

 

 

 


2. Self


셀프란 무엇일까요? 

 

self 자체만은 특별한 의미를 가지고 있지 않습니다.

 

하지만 클래스 에선 클래스 자신을 말하는 것입니다.

 

Student 클래스 내부 변수가 2개 있습니다. 

 

다른 객체지향 언어에서 사용되는 this 와 동일한 의미를 가지고 있습니다.

 

하지만 C++ , java 와 다른게 파라미터에 self 를 넣어주고 self.Method() 형식으로 사용해야합니다.

 

클래스 내부에 있는 변수를 사용하기 위해선 self 를 반드시 넣어주어야합니다.

 

만약 넣지않을경우 undefine Error 메시지를 확인할수 있습니다.

 

 

Self 사용의 예

 

class Student :
   
   def setup(self,a,b):
        self.math = a
        self.kor = b
   def printData(self):
        print('Students math ={0},kor={1}'.format(self.math,self.kor))

 

 

클래스 내부에서 있는 클래스 변수를 사용하기 위해선 self 파라미터를 반드시 기입해주어야 합니다.

 

기입하지 않을경우 인수패싱(파라미터를 넘겨주는 행위)를 하고있지 않다는 에러를 발생합니다.

 

 

 


3. 최상위 스크립트 환경


 

 

파이썬에는 다른프로그램처럼 프로그램의 시작점이 없습니다. 

파이썬은 스크립트 언어 입니다. 시작지점은 indent (들여쓰기 0순위) 구조입니다

 

예문으로 설명드리겠습니다.




-참고-

https://hashcode.co.kr/questions/3/if-__name__-__main__%EC%9D%80-%EC%99%9C%EC%93%B0%EB%82%98%EC%9A%94

 

if __name__ == "__main__"은 왜쓰나요?

밑의 코드에서 if __name__ == ""__main__""은 왜 쓰는건가요? 소스코드 if __name__ == ""__main__"" print ""hello""

hashcode.co.kr

 

A.py

#file A.py

def func():
    print('A func_hi')

print('A first_run_hi')

if __name__ == '__main__':
    print('A.py run ')
else:
    print('A.py import run')

 

 

A.py 실행결과

 

 

 

B.py

#file B.py

import A as afile

print('B first_run_bye')

afile.func()

if __name__ == '__main__':
    print('B.py run')
else:
    print('B.py import run')

 

 

B.py 실행결과

 

* main 함수(프로그램 시작점)  : 프로그램의 시작점이란 c++ , java 와 같은 컴파일러 프로그래밍 언어는 main() 함수가 있습니다. 

main 함수는 프로그램에서 단 1개만 존재해야하며, main 함수는 다중정의 할수 없고, 기본 키워드 로 정해져있어 이름 지정또한 할수없습니다. 


main 함수가 없으면 프로그램의 시작또한 없다고 해도 생각할수 있습니다.

 

 

 


4. initializer (초기자)


초기자란 클래스를 선언하면서 데이터를 초기화 할수 있도록 하는것을 말합니다. C, JAVA 와 같은 객체지향 프로그램의 생성자라고 생각하시면 됩니다.

 

import sys;


class Student:
  
    def __init__(self,a,b):
    #__init__ 초기자 (Initializer) 
        self.math = a
        self.kor = b
    def printData(self):
        print('Students math ={0},kor={1}'.format(self.math,self.kor))

def main():
    s = Student(10,10)    
    s.printData();
	
	
if __name__ == "__main__":
    main()

 

 

 

 

 


혼자 해보기 문제


 

 


1. 오늘 공부한것이 무엇 일까요?

 

2. 5명의 학생이 존재합니다. 학생은 이름, 번호,수학,영어 점수를 가지고있고,  학생정보를 출력하는 함수가  가지고 있습니다 해당 프로그램을 만드세요

(단 외부 입력은 없습니다.)


클래스 구성클래스 이름 : Student함수 구성     

프로그램을 실행하면 학생정보를 출력합니다.   

출력 예)

name : mike    number : 0 math : 90  eng : 90 average : 90
name : niko    number : 1 math : 40  eng : 40 average : 40
name : kim    number : 2 math : 80  eng : 80 average : 80
name : mao    number : 3 math : 20  eng : 20 average : 20
name : shen    number : 4 math : 30  eng : 30 average : 30


 


3.  2번 문제를 키보드입력을 받아 프로그램을 진행하세요 

프로그램을 진행하면 아래와같은 메뉴가 출력되야 합니다
1. 학생 정보 입력   
2. 학생 정보 출력


메뉴 설명
1.학생 정보입력  : 이름 , 번호 , 수학 , 영어 점수를 입력받습니다.
2. 학생의 정보를 출력합니다. 출력하고 난뒤 메인메뉴로 돌아옵니다.


 

반응형

관련글 더보기

댓글 영역