일시 : 2018.01.08 16:30 ~ 18:00
내용 : chap 11 객체 지향
//
객체 지향 (OOP:Object Oriented Programming)
클래스
파이썬은 객체 지향을 적용할 수 있는 언어
class 클래스이름 :
##코드 작성
클래스 안에 정의된 속성은 필드(Field), 함수는 메소드(Method)
self는 클래스 자신을 가리킴
self.speed는 자신의 클래스에 정의된 speed 변수 (클래스 안에 argument들을 사용하기 위함)
안 쓰면 메소드 안에 있는 필드에 접근 X
self 매개변수를 전달받지는 X
클래스를 설계하여 여러개의 '인스턴스'를 생성
class 자동차 : => myCar1 = Car() : 인스턴스1
색상, 속도 등 속성 myCar2 = Car() : 인스턴스2
각 인스턴스에는 각각의 필드 존재하여 별도의 값 대입 가능
메소드 호출할 때는 매개변수로 self X
클래스에서 정의한 메소드는 def upSpeed(self, value) : 지만
메소드를 호출할 때는 myCar1.upSpeed(30) 으로 호출
class 클래스 이름 :
//필드 선언
// 메소드 선언
으로 클래스를 생성한다.
인스턴스 = 클래스이름() (myCar = Car()) 로 인스턴스를 생성한다.
인스턴스.필드이름 = 값 / 인스턴스.메소드()로 클래스에 정의한 필드나 메소드를 사용한다.
실습
전등
print("lF1 powerState", lF1.powerState)print("lF2 powerState", lF2.powerState)
서식 문자 모를 경우 콤마로 사용 가능
class lightFixture :
powerState = False
machineName = ""
def setPowerOn(self):
self.powerState = True
## 인자 굳이 필요 없음
def setPowerOff(self):
self.powerState = False
def setPower(self, powerState):
if powerState == True :
self.powerState = True
else :
self.powerState = False
## self 변수에 사용자가 호출할 때 넘겨줄 값을 저장
def isPowerState(self):
if self.powerState == True :
return True
else:
return False
def setMachineName(self, name):
self.machinName = name
lF1 = lightFixture()
lF2 = lightFixture()
print(lF1.powerState)
lF1.powerState = True
print(lF1.powerState)
lF1.setMachineName("안방등")
print("lF1 : %s" % lF1.machinName)
lF2.setMachineName("거실등")
print("lF2 : %s" % lF2.machinName)
print(lF2.powerState)
lF2.setPowerOn()
print(lF2.powerState)
lF1.setPower(False)
print(lF1.powerState)
print("lF1 powerState", lF1.powerState)
print("lF2 powerState", lF2.powerState)
11-02
class Car:
color = ""
speed = 0
def upSpeed(self, value):
self.speed += value
def downSpeed(self, value):
self.speed -= value
##메인 코드
myCar1 = Car()
myCar1.color = "red"
myCar1.upSpeed(50)
myCar2 = Car()
myCar2.color = "yellow"
myCar2.speed = 100
myCar2.downSpeed(40)
print("car1 color : %s, speed : %s " % (myCar1.color, myCar1.speed))
print("car2 color : %s, speed : %s " % (myCar2.color, myCar2.speed))
'2017 멀티캠퍼스 > Python' 카테고리의 다른 글
[Raspberry Pi/Python] 현재 시간 FND에 출력하기 (0) | 2018.01.16 |
---|---|
[Python] #14 파이썬 객체 지향 : 생성자와 상속 (0) | 2018.01.14 |
[Python] #12 파이썬 파일 입출력 (0) | 2018.01.14 |
# 파이썬 사후 평가 오답 (0) | 2018.01.11 |
[Python] #11 파이썬 함수와 모듈 (0) | 2018.01.09 |