: 생성자가 호출 되는 순가 메모리에 할당 되는 것이 아니라, 프로그램이 시작하면 메모리에 할당 되어 있는 생성자 입니다. 데이터 속성을 초기화 메소드(__init__())가 아닌 클래스에 직접 정의한다면 객체가 정의되기 이전에 존재합니다. 해당 클래스의 모든 인스턴스가 공유됩니다.
< class 생성자 생성 >
클래식 생성자 생성
- 생성자 함수 안에서 선언 x, (self)x - 변수를 바로 선언 = 클래스 생성자(클래스 멤버), [] : 리스트의 자료형으로 선언(리스트로 자료형 관리) - 인스턴스가 공유하는 멤버로 사용
인스턴스 멤버
- self.변수이름 (내부에서 사용될 때는 self. 이 무조건 들어가야 합니다.)
- append(text) : 입력으로 가져오는 데이터를 내가 가지고 있는 데이터 마지막에 추가
< 출력 >
결과 ( console )
< 비교 >
- 기본적 class 선언
< 출력 >
결과 ( console )
3. 정적 메서드(Static Method)
: 클래스를 통해 호출 가능한 메서드
- @staticmethod 데코레이터로 수식 - self 매개변수 없이 정의(self 매개변수를 전달받을 방법이 없음)
- 기본 형태
class 클래스이름:
@staticmethod
def 메서드이름(매개변수):
pass
결과 ( console )
- 데코레이션의 형태로 staticmethod를 사용할 수 있도록 합니다.
- static 메서드는 self를 사용하지 않습니다.
: 왜냐하면 static은 미리 메서드에 할당되어야하고 , self 는 인스턴스 생성이 되어야 메모리에 할당이 되어야 하기 때문에 사용하지 않습니다.
4. 클래스 메서드(Class Method)
: 클래스를 통해 호출 가능한 메서드
- @classmethod 데코레이터와 cls(= class) 매개변수가 필수
- 기본 형태
class 클래스이름:
@classmethod
def 메서드이름(cls):
pass
결과 ( console )
정적 메서드(Static method)와 클라스 메서드(Class method)는 cls 를 통해서 class를 전달 해주는 차이점을 가집니다.
5. private member
: 클래스의 안에서만 접근이 가능한 멤버. - 작명법(Naming)으로 private/public 멤버 구분.
- private 멤버의 명명 규칙 두 개의 밑줄 __이 접두사여야 함. 예) __number 접미사는 밑줄이 한 개까지만 허용. 예) __number_ 접미사의 밑줄이 두 개 이상이면 public 멤버로 간주함 예) __number__
주의 ) 앞에 __ 가 있어도 변수 이름 뒤에 _가 2개 이상 오면 public이 됩니다.
: 파이참이란 파이선 프로그램을 쉽게 개발할 수 있도록 하는 IDE 입니다. IDE란 [Integrated Development Environment]의 약자로 통합 개발 환경을 말합니다. 통합개발환경은 개발자가 소프트웨어를 개발하는 과정에 필요한 모든 작업을 하나의 소프트웨어에서 처리할 수 있도록 환경을 제공합니다. 코드 편집기, 디버거, 컴파일러, 인터프리터 등을 포함하고 개발자에게 제공합니다. 자주 사용되는 IDE의 종류로는 비주얼스튜디오, 이클립스, 파이참 등이 있습니다.
: 파이썬은 함수(function)라는 기능을 제공하는데 특정 용도의 코드를 한 곳에 모아 놓은 것을 뜻합니다. 그래서 함수는 처음 한 번만 작성해 놓으면 나중에 필요할 때 계속 불러 쓸 수 있습니다. 예를 들어 지금까지 사용했던print,input등도 모두 파이썬에서 미리 만들어 둔 함수입니다.
함수를 사용 장점
- 코드의 용도를 구분할 수 있다.
- 코드를 재사용할 수 있다.
- 실수를 줄일 수 있다.
용어 정리
- 정의(Definition) : 어떤 이름을 가진 코드가 구체적으로 어떻게 동작 하는지를 ‘구체적으로 기술 하는 것’.
- 호출(Call) : 함수를 부르는 행위. - 호출자(Caller) : 함수를 부르는 코드. - 반환(Return) : 함수가 호출자에게 결과를 돌려주는 것.
함수 정의하기
: 함수는def에 함수 이름을 지정하고( )(괄호)와:(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성합니다.
- 기본 형태
def 함수이름():
코드
함수 또한 자신이 영역을 가지는데 이때도 들여쓰기를 통해서 사용합니다.
함수 정의 + 호출
1. 호출과 반환
my_abs( ) 안에 아무 값도 넣지 않기 때문에 error 가 난다.
- 올바른 실행
- 함수의 이름을 출력하면 할당된 주소값 반환
2. 기본값 매개변수(Default Argument Value)
3. 키워드 인자(Keyword Argument)
: 호출자가 매개변수의 이름을 일일이 저장해 데이터를 입합니다.
+ 매개변수 이름으로 저장 가능
- 주의)매개변수 중 초기화 되어지지 않는 값이 존재 할 때, 값을 전달하지 않으면 error = name 데이터 미전달.
해결) + name 데이터 추가
- 매개변수의 이름으로 접근 할 때는 순서는 중요하지 않음.
4. 가변 매개 변수 (Arbitrary Argument List)
- ( * ) 한개 일때 = tuple
- 개수의 제한을 두지 않는 매개 변수로 전달 받는 형태를 ( * ) 한개 일때, tuple로 합니다. 데이터 자체를 확정지어서 읽어들입니다.
- ( ** ) 두개 일때 = dictionary
key = value 의 형태
주의 ) 일반 매개변수와 ,가변 매개수가 함께 사용할 때는 이름을 같이 넣어서 호출 하면 error
why ? 가능하게 되면 순서를 바꿔도 가능하게 되는 것인데, 가변인자인지 데이터가 잘못들어간 것인지 모호해집니다. 그렇기에 지원하지 않고 error를 냅니다.
주의 ) ( * ) 일때 튜플로 반환 되므로 어떤것이 가변인자고, 일반매개변수 인지 알수 없기 때문에 error 를 냅니다.
단, 정의의 문제는 아닙니다. (정의 가능)
해결) 매개변수의 이름을 넣어서 출력
5. 호출자에게 반환하기 (return)
return
1. 호출자에게 결과 전달
2. 함수 즉시 종료 하고 호출한 쪽으로 이동
함수 즉시 종료 / 호출자에게 결과 전달 (한 함수 안에서 여러 개의 return 배치 가능)
주의) None : 변수는 선언되었지만 아무런 값이 담기지 않고 사용될 경우
* javascript - undefind
반환데이터 없이 '함수 종료' 의 의미로 사용.
반환 결과 없고, 함수 중간에 종료시킬 일도 없을 때, return문 생략 가능
6. 변수의 유효 범위 (scope)
1) 지역변수 O
2) 함수 밖 변수 , 지연변수 X
3) global 변수
: global 키워드: 전역변수, 지역변수의 생성을 막으며, 함수가 호출시 생성시 전체 코드에서 사용하여 변수의 번위를 확대 합니다.