2017 멀티캠퍼스/Python

[Python] #13 파이썬 객체 지향 : 클래스

꿈꾸는어린이 2018. 1. 14. 01:06

//

일시 : 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) 으로 호출



  1. class 클래스 이름 :

    ​ //필드 선언

    ​ // 메소드 선언

    으로 클래스를 생성한다.

  2. 인스턴스 = 클래스이름() (myCar = Car()) 로 인스턴스를 생성한다.

  3. 인스턴스.필드이름 = 값 / 인스턴스.메소드()로 클래스에 정의한 필드나 메소드를 사용한다.




실습

전등

  • 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))