티스토리 뷰
시작에 앞서 본 내용은 학습 내용을 기록하기 위함이며 내용에 틀린 점이 있을 수 있으니 이점 유의 부탁드립니다.
__init__
initialize, constructor
생성자, 초기화자, 초기화 함수
용어 설명
가변 객체(Mutable Object) : 값이 변하더라도 메모리에 할당된 주소 값이 일정한 객체
Ex. List, Dict,... 등
객체(Object) : 클래스에 선언된 모양 그 자체
클래스의 인스턴스(instance)
모든 인스턴스를 대표하는 포괄적인 의미
인스턴스(Instance) : 클래스가 메모리에 할당된 상태
인스턴스는 객체에 포함된다.
추상적인 개념과 구체적인 객체 사이의 관계에 초점을 맞출 경우에 사용
원본으로부터 생성된 복제본을 의미추후 클래스 및 객체, 인스턴스에 대해 아카이브할 예정
생성자(Initialize)
def __init__(self):
새로 생성된 클래스 인스턴스에 대해 자동으로 필요한 값, 출력 등을 초기값으로 세팅하는 역할
- 새로 생성된 클래스 인스턴스에 필요한 값, 출력이 자동으로 실행된다.
class foo:
def __init__(self):
print('안녕하세요')
var = foo()
안녕하세요
위 코드 실행 결과와 같이
__init__ 함수의 역할중 하나는 Class가 호출될 때 자동으로 실행되는 함수 이다.
- 인자 전달
전달받은 값으로 인스턴스 변수 초기화
class foo:
def __init__(self, name):
self.name = name
var = foo('F7 project') # 인스턴스 생성 및 인자 전달
print(var.name) # 인스턴스 변수 속성참조(attribute references)
F7 project
- 인스턴스의 함수(메서드)에서 변수 사용
class foo:
def __init__(self, name):
self.name = name
def hello(self):
print(f'안녕하세요 {self.name}님') # 인스턴스의 함수(메서드)에서 변수 사용
var = foo('F7 project') # 인스턴스 생성 및 인자 전달
var.hello()
안녕하세요 F7 project님
초기화자, 초기화 함수라고 불리는 이유?(필자의 생각)
더보기
초기화란?
initialization
- 초기화(initialization) : 변수 선언 초기에 지정된 값
자바, C 등과 같은 언어의 경우 변수 이름만 먼저 선언이 가능하다.
이후 변수를 사용하기 위해 반드시 값을 넣어주는 작업이 필요하며,
이를 초기 지정 값 설정, 초기화(초기값 설정)라고 한다.
- Language : C
변수 초기화 예시
#include <stdio.h>
int main(void)
{
int num; // 변수 선언
num = 1; // 변수 초기화(변수 사용전 값을 넣어주는 작업)
printf("%d", num);
return 0
}
- 클래스 변수 사용
리스트, 딕셔너리와 같이 가변 가능한 객체를 클래스 변수로 선언하여 공유될 때 예상치 못한 결과가 발생한다.
# Class 선언
class Foo:
list_ = [] # 클래스 변수
def add(self, var):
self.list_.append(var)
# 인스턴스 a
a = Foo()
a.add(1)
print(a.list_)
[1]
# 인스턴스 b
b = Foo()
b.add(2)
print(b.list_)
[1, 2]
위 결과와 같이
초기화자를 사용하지 않고 클래스 변수로 빈 리스트를 선언하여 사용할 경우
하나의 리스트가 모든 Foo 인스턴스들에 공유된다.
- 인스턴스 변수 사용
초기화 함수를 사용한 변수 초기화
# Class 선언
class Foo:
def __init__(self):
self.list_ = [] # 인스턴스 변수
def add(self, var):
self.list_.append(var)
# 인스턴스 a
a = Foo()
a.add(1)
print(a.list_)
[1]
# 인스턴스 b
b = Foo()
b.add(2)
print(b.list_)
[2]
이와 같이
__init__을 통해 클래스 호출 시 자동으로 인스턴스 변수로 선언하여,
모든 인스턴스가 공용으로 수정 가능한 변수가 아닌,
각 인스턴스의 초기값으로 설정해주어 인스턴스 간 간섭이 없도록 하기 때문에,
초기화자, 초기화 함수라 명명한 것이 아닌가 추측함.
참조
9. Classes — Python 3.10.7 documentation
9. Classes Classes provide a means of bundling data and functionality together. Creating a new class creates a new type of object, allowing new instances of that type to be made. Each class instance can have attributes attached to it for maintaining its st
docs.python.org
'Python > Glossary[용어 사전]' 카테고리의 다른 글
| [ Deep 하게 ] 함수 : Parameters 매개변수 | Arguments 인수 (0) | 2023.08.17 |
|---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 콘다
- arguments
- _meaning
- sad asd
- 연산속도
- print()
- _의미
- 파이썬 변수
- 재귀함수 설명
- recursive
- d asd asd
- matplotlib
- 백준
- 덮어쓰기
- Python
- sdsad
- asd ad
- anaconda
- recursive function
- 이중 프린트
- 변수 덮어쓰기
- 이스케이프 코드
- conda
- underscore
- 재귀함수 이해
- sep=
- 파이썬
- 재귀?
- list comprehension
- parameters
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함