일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 밴쿠버응급실
- sql
- insert_into
- PostgresDB
- MongoDB
- python데이터베이스연동
- DB
- statement
- subquery
- query
- Join
- javascript
- PostgreSQL
- Collections
- PreparedStatement
- 파이썬
- 몽고디비
- DATABASE
- cursor()
- sqlite3
- python
- 데이터베이스
- MySQL
- 자바스크립트
- SubqueryFilter
- DBFilter
- onetoone
- 서브쿼리
- postgres
- insertOne
- Today
- Total
새벽코딩
[Python] OOP-2 . 생성자 (Constructor) 본문
1) 생성자의 개념
- 생성자(Constructor)는 인스턴스를 생성하면 무조건 호출되는 메서드 이다.
- 인스턴스를 생성하면서, 필드값을 초기화 하는 역할을 하는 메서드 이기도 하다.
class Car:
color = ""
speed = 0
def upSpeed(self, value):
self.speed += value
def downSpeed(self, value):
self.speed -= value
def printFields(self, myCar):
print("%s의 색상 : %s, 속도 : %dkm" % (myCar, self.color, self.speed))
if __name__ =="__main__":
myCar1 = Car()
myCar2 = Car()
myCar3 = Car()
위에 Car class는 따로 생성자를 정의하지 않았는데, 이런 경우는 Python interpreter가 알아서 추가해준다.
(묵시적으로 아무런 값으로 설정되지 않은 기본 생성자를 추가해준다)
2) 생성자의 기본
- 생성자는 아래와 같은 이름을 갖는다. 언더바 ( _ ) 2개가 붙은것을 Python 에서는 reserved method라고 한다.
(프로그램 작성시, 이런 reserved된 이름을 사용해서 함수명, 변수명을 만들 수 없다)
__init__()
① 매개변수가 없는 생성자 → 기본생성자
class Car:
color = ""
speed = 0
def __init__(self):
self.color = "red"
self.speed = 0
# and then when creating instance, it calls the constructor
myCar1 = Car()
마지막 라인에, 생성자를 호출하면서 color은 red로 그리고 speed는 0으로 초기화가 이루어진다.
이렇게, 매개변수가 self 만 있는 생성자를 기본 생성자라고 한다.
Python에서 생성자의 규칙 1. 생성자명은 __init__ 으로 작성해야한다. 2. 생성자는 return 값이 없다. 3. 생성자가 여러개 존재하면 안된다. |
② 매개 변수가 있는 생성자
class Car:
color = ""
speed = 0
def __init__(self, color, speed):
self.color = color
self.speed = speed
# main part
myCar1 = Car("red", 30)
mycar2 = Car("blue", 200)
이 경우, 인스턴스를 만들 때 초기값을 매개변수로 받아서 초기화 한다.
단, 이 경우에는 매개변수 없이 Car instance를 생성하면 오류 발생
3) Car 클래스의 전체 코드 (생성자 추가, getter() 메서드 추가)
class Car :
name = ""
speed = 0
# 매개변수가 있는 생성자
def __init__(self, name, speed) :
self.name = name
self.speed = speed
# 아래 2개의 메서드는 getter() 메서드라고 한다.
def getName(self):
return self.name
def getSpeed(self) :
return self.speed
#변수 선언 부분
car1, car2 = None, None
#메인 코드 부분 #
car1 = Car("아우디", 0)
car2 = Car("벤츠", 30)
print("%s의 현재 속도는 것입니다." % (car1.getName(), car1.getSpeed()))
print("%s의 현재 속도는 0입니다." % (car2.getName(), car2.getSpeed()))
OOP에서 캡슐화라는 개념이 존재하는데, class의 filed를 위부로 노출시키는 것을 방지하는 것을 의미한다.
setter() method와 getter() method가 있는데, 보통 getter() 만 주로 쓰인다.
(최소한 필드의 값을 읽어야 연계된 프로그램에서 그 값을 활용가능하기 떄문)
비유하자면, 캡슐안에 Variables과 Method가 들어있고, 캡슐 껍질에 getter() 가 존재하면서 내부 필드를 가져올 수 있다.
참고 (접근 제어자?)
#변수 앞에 _ _를 붙이면 private 성질로 클래스 내부에서만 접근 가능
class Person:
__name = ""
__age = 0
height = 180
참고2 __str__() 함수
def __str__(self):
print(self.__name)
print(self.age)
print(self.height)
print(self.weight)
print(self.address)
# __str__() method는 맴버변수의 값을 간단하게 확인하고자 할 때 주로 사용한다.
# JAVA의 toString() method와 유사
출처 : 파이썬(Python) 기초부터 실무까지 part.4
'Programming > Python' 카테고리의 다른 글
[Python] OOP-4 . Overloading & Overriding (0) | 2023.01.22 |
---|---|
[Python] OOP-3 . instance variable vs class variable (0) | 2023.01.21 |
[Python] OOP-1 . 클래스 기본 (0) | 2023.01.20 |
파이썬 키워드 인자 & 가변 인자 (feat 매개변수와 인자 차이) (0) | 2022.12.31 |
파이썬 문자열 공백제거, 문자열 나누기(strip, lstrip, rstrip, split 함수) (0) | 2022.12.30 |