Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- PostgresDB
- subquery
- python
- statement
- MySQL
- DATABASE
- sql
- query
- 데이터베이스
- insertOne
- postgres
- Collections
- 몽고디비
- PostgreSQL
- sqlite3
- Join
- 밴쿠버응급실
- 서브쿼리
- 파이썬
- 자바스크립트
- PreparedStatement
- SubqueryFilter
- MongoDB
- python데이터베이스연동
- onetoone
- DBFilter
- DB
- javascript
- insert_into
- cursor()
Archives
- Today
- Total
새벽코딩
[Python] OOP-3 . instance variable vs class variable 본문
Programming/Python
[Python] OOP-3 . instance variable vs class variable
midnightcoder 2023. 1. 21. 06:471) Instance variable (인스턴스 변수)
class Car :
name = ""
speed = 0
위 class에 있는 변수 name과 speed는 인스턴스 변수이다.
인스턴스 변수는 인스턴스를 생성해야 사용할 수 있는 변수이다. (즉 아직 실제 공간이 할당되지 않음)
이제 이 설계도 (class)를 이요해 메인 코드 부분에서 자동차 (instance)를 만든다.
car1 = Car()
car2 = Car()
이제 car1과 car2 는 실제 존재한느 자동차이며, 이 안에는 color와 speed의 메모리에 공간이 만들어 졌다.
** 결론 : 인스턴스 변수는 메모리의 독립적인 공간을 가지고 있으며, 반드시 인스턴스를 생성해야지 사용할 수 있다.
2) class variable (클래스 변수)
- 클래스 변수는 클래스가 로딩될 때 이미 메모리 공간에 할당된 변수를 의미한다.
그래서 클래스 변수는 인스턴스에 별도의 공간을 할당하지 않고, 여러 인스턴스가 클래스 변수를 공유한다.
클래스변수에 접근할 때는 클래스명.클래스변수명 의 방식으로 접근해야한다.
또다른 예로, 포커 카드를 생각할 수 있는데,
52장의 카드에서, 카드의 폭과 넓이는 공통 변수인 class 변수가 되야한다.
예제 코드
class Car :
# Car 클래스의 필드
color = "" # 인스턴스 변수
speed = 0 # 인스턴스 변수
count = 0 # 클래스 변수는 반드시 필드로 선언해줘야 한다.(중요)
# 기본 생성자
def __init__(self):
self.color = "노랑"
self.speed = 0
Car.count += 1
위의 코드에서
처음에 변수를 선언하는 시점에서는 instance 변수인지 class 변수인지 구분할 수 가 없지만,
생성자에 마지막 line을 보면 Car.count 를 통해서, class 변수임을 알 수 있다. (인스턴스변수는 self. 를 붙임)
3) 요약
출처 : 파이썬(Python) 기초부터 실무까지 part.4
'Programming > Python' 카테고리의 다른 글
[Python] OOP-4 . Overloading & Overriding (0) | 2023.01.22 |
---|---|
[Python] OOP-2 . 생성자 (Constructor) (0) | 2023.01.20 |
[Python] OOP-1 . 클래스 기본 (0) | 2023.01.20 |
파이썬 키워드 인자 & 가변 인자 (feat 매개변수와 인자 차이) (0) | 2022.12.31 |
파이썬 문자열 공백제거, 문자열 나누기(strip, lstrip, rstrip, split 함수) (0) | 2022.12.30 |