· κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° OOP
· ν΄λμ€ Class
κ°μ²΄λ₯Ό μ μνλ ν λλ μ€κ³λ
νμ€ μΈκ³μ μ¬λ¬Όμ μ»΄ν¨ν° μμμ ꡬννκΈ° μν΄ κ³ μλ κ°λ
class ν΄λμ€λͺ
:
· νλ Field
κ°μ²΄μ μμ±μ λ³μλ‘ μμ±
class Car:
color = ""
speed = 0
· λ©μλ Method
κ°μ²΄μ κΈ°λ₯μ ν¨μ(λ©μλ)λ‘ κ΅¬ν
def upSpeed(self, value):
self.speed += value
def downSpeed(self, value):
self.speed -= value
· self
ν΄λμ€ μκΈ° μμ μ κ°λ¦¬ν¨λ€.
λ©μλ μμμ νλμ μ κ·ΌνκΈ° μν΄μ μμ±
· μΈμ€ν΄μ€ Instance = κ°μ²΄
μΈμ€ν΄μ€ μμ±
myCar1 = Car()
myCar2 = Car()
νλμ κ° λμ
myCar1.color = "red"
myCar1.speed = 0
λ©μλ νΈμΆ
myCar1.upSpeed(30)
β self study 12-1
class Car:
color = ''
speed = 0
def upSpeed(self,value) :
if self.speed <= 150 :
self.speed = 150
else :
self.speed += value
def downSpeed(self,value) :
self.speed -= value
myCar1 = Car()
myCar1.color = 'red'
myCar1.speed = 0
myCar2 = Car()
myCar2.color = 'red'
myCar2.speed = 0
myCar1.upSpeed(10)
myCar2.upSpeed(160)
print("car speed : %d, color:%s" %(myCar2.speed, myCar2.color))
· μμ±μ Constructor
μΈμ€ν΄μ€λ₯Ό μμ±νλ©΄ 무쑰건 νΈμΆλλ λ©μλ
class ν΄λμ€λͺ
:
def __init__(self):
#μ½λ
class Car :
color = ""
speed = 0
def __init__(self):
self.color = "λΉ¨κ°"
self.speed = 0
myCar1 = Car() #μλμΌλ‘ μμ±μ νΈμΆ
κΈ°λ³Έ μμ±μ : μλμΌλ‘ κ°μ΄ μ΄κΈ°ν λλ€.
class Car:
color = ""
speed = 0
def __init__(self) :
self.color = 'red'
self.speed = 0
myCar1 = Car()
맀κ°λ³μκ° μλ μμ±μ : 맀κ°λ³μμμ΄ μΈμ€ν΄μ€ μμ±μ μ€λ₯!!
class Car:
color = ""
speed = 0
def __init__(self,value1,value2) :
self.color = value1
self.color = value2
myCar1 = Car("red", 30)
myCar2 = Car("black", 20)
getSpeed λ©μλλ₯Ό λ§λ€μ΄μ κ°μ λ°μμ€
def getSpeed(self):
return self.speed
car1,car2 = None, None
car1 = Car("a",1)
car2 = Car("b",2)
car1.getName()
car1.getSpeed()
· μΈμ€ν΄μ€ λ³μ
νλ : μ€μ 곡κ°μ΄ ν λΉ λκ² X
μΈμ€ν΄μ€ μμ±
νλ > μΈμ€ν΄μ€ λ³μλ‘ λ³λ 곡κ°μ΄ μμ±λ¨
· ν΄λμ€ λ³μ
ν΄λμ€ μμ 곡κ°μ΄ ν λΉλ λ³μ (μΈμ€ν΄μ€μ λ³λ κ³΅κ° ν λΉ x ν΄λμ€ λ³μ κ³΅κ° ν¨κ» μ¬μ©)
ν΄λμ€λͺ .ν΄λμ€λ³μλͺ
μΈμ€ν΄μ€.ν΄λμ€λ³μλͺ
μ κ·Όνλ νλλ ν΄λμ€ μ체μ 곡κ°μ΄ μμ±
class Car:
color = ""
speed = 0
count = 0 #ν΄λμ€ λ³μ
def __inif__(self):
self.speed = 0 #
Car.count +=1
myCar1, myCar2 = None, None
myCar1 = Car()
myCar1.speed = 30
print("μλμ°¨ μλ %d , μλμ°¨ μ΄ %dλ" % (myCar.speed, myCar.count))
μ΄λ€ κ²μ΄ ν΄λμ€ λ³μ μΈμ§ μ μ μλκ°?
=> μΈμ€ν΄μ€ λ³μ, ν΄λμ€ λ³μ μ μΈ μμ μμ κ΅¬λΆ λΆκ°λ₯νμ§λ§ , μ κ·Όμ λΆμ¬μ§λ λ³μμ λ°λΌ ꡬλΆλ¨.
νλμ μ κ·Όν λ, self λΆμ΄λ©΄ = μΈμ€ν΄μ€ λ³μ
ν΄λμ€λ₯Ό λΆμ΄λ©΄ = ν΄λμ€ λ³μ μμ±
μΈμ€ν΄μ€.μΈμ€ν΄μ€λ³μ => μΈμ€ν΄μ€ λ³μ μ κ·Ό
μΈμ€ν΄μ€.ν΄λμ€λ³μ => ν΄λμ€ λ³μ μ κ·Ό
· μμ Inheritance
κΈ°μ‘΄ ν΄λμ€μ νλ, λ©μλλ₯Ό κ·Έλλ‘ λ¬Όλ € λ°λ μλ‘μ΄ ν΄λμ€ λ§λ€κΈ°.
class μλΈν΄λμ€(μνΌν΄λμ€) :
#μ½λ
· super()
μλΈ ν΄λμ€ λ΄μμ μνΌν΄λμ€μ λ©μλ,μμ± μ¬μ©μ
super().carMethod() #μ΄λ°μμΌλ‘ μ¬μ©νλ©΄ λλ€.!
· λ©μλ μ€λ²λΌμ΄λ© Overriding
μμ ν΄λμ€μ λ©μλλ₯Ό μλΈ ν΄λμ€μμ μ¬μ μ
class Car:
speed = 0
def upSpeed(self,value) :
self.speed += value
print("speed : %d" % self.speed)
class Sedan(Car) :
def upSpeed(self,value) : #μ¬μ μ
self.speed += value
if self.speed>150:
self.speed = 150
print("νμ¬ μλ(μλΈν΄λμ€): %d" % self.speed)
class Truck(Car):
psss
sedan1, truck1 = None, None
truck1 = Truck()
sedan1. Sedan()
print("truck --> :" end="")
truck.upSpeed(200) #μνΌν΄λμ€ λ©μλ νΈμΆ
print("sedan --> :" end="")
sedan1.upSpeed(100) #μ¬μ μ λ λ©μλ νΈμΆ
β self study 12-2
sonata μμ ν΄λμ€ (μνΌν΄λμ€λ₯Ό Sedan μΌλ‘ μ‘μμ€λ€.)
class Car:
speed = 0
def upSpeed(self,value) :
self.speed += value
print("speed : %d" % self.speed)
class Sedan(Car) :
def upSpeed(self,value) : #μ¬μ μ
self.speed += value
if self.speed>150:
self.speed = 150
print("νμ¬ μλ(μλΈν΄λμ€): %d" % self.speed)
class Truck(Car):
pass
class Sonata(Sedan):
pass
sedan1, truck1, sonata1 = None, None, None
truck1 = Truck()
sedan1 = Sedan()
sonata1 = Sonata()
print("truck --> :", end="")
truck1.upSpeed(200) #μνΌν΄λμ€ λ©μλ νΈμΆ
print("sedan --> :", end="")
sedan1.upSpeed(200) #μ¬μ μ λ λ©μλ νΈμΆ
print("sonata --> :", end="")
sonata1.upSpeed(200) #μ¬μ μ λ λ©μλ νΈμΆ
· ν΄λμ€μ νΉλ³ν λ©μλ
__del__ ()
Destructor μλ©Έμ λ©μλ , μΈμ€ν΄μ€ μμ μ μλμΌλ‘ νΈμΆλλ€.
μΈμ€ν΄μ€κ° μμ λ λ μμ μ΄ νμνλ©΄ ν΄λΉ λ©μλ μμ μ½λλ₯Ό μ½μ νλ©΄ λλ€.
del(μΈμ€ν΄μ€)
__repr__()
μΈμ€ν΄μ€λ₯Ό print()λ¬ΈμΌλ‘ μΆλ ₯ν λ μ€νλλ λ©μλ
print(μΈμ€ν΄μ€)
__add__()
μΈμ€ν΄μ€ μ¬μ΄μ λ§μ μμ μ μ€ν
μΈμ€ν΄μ€ μ¬μ΄μ λ§μ μμ μ μ¬μ©
__it__()
__le__()
__gt__()
__ge__()
__eq__()
__ne__()
μΈμ€ν΄μ€ μ¬μ΄μ λΉκ΅ μ°μ°μ
· μΆμ λ©μλ
μΆμν΄λμ€μμ μμ±λ λ©μλ / ꡬνμμ΄ μ μΈλ§ λμ΄μμ.
μλΈ ν΄λμ€μμ λ©μλλ₯Ό μ€λ²λΌμ΄λ©ν΄μ μ¬μ©νλ €λ©΄
μνΌν΄λμ€μμλ λΉκ»μ§ λ©μλλ§ λ§λ€κ³ pass λ‘ μ±μ°λ©΄ λλ€.
class SuperClass:
def method(self):
pass
class SubClass1 (SuperClass):
def method(self):
print('μλΈμμ λ©μλ μ€λ²λΌμ΄λ©')
class SubClass2 (SuperClass):
pass
sub1 = SubClass1()
sub2 = SubClass2()
sub1.method()
sub2.method()
μνΌν΄λμ€μμ μμλ°μ μλΈν΄λμ€λ
method() λ©μλλ₯Ό λ°λμ! μ€λ²λΌμ΄λ© ν΄μΌ μ€λ₯ λ°μ μν¨
· λ©ν° μ€λ λ
Thread νλ‘κ·Έλ¨ νλμμ μ¬λ¬κ°λ₯Ό λμμ μ²λ¦¬ν μ μλλ‘ μ 곡νλ κΈ°λ₯
μΌλ° νλ‘κ·Έλ¨ : μμ 1 > μμ 2 >μμ 3
μ€λ λ : μμ 1,2,3 λμμ μ²λ¦¬
μΌλ°
import time
class RacingCar:
carName = ''
def __init__(self,name) :
self.carName = name
def runCar(self):
for _ in range(0,3):
carStr = self.carName + '~~λ¬λ¦½λλ€'
print (carStr, end="")
time.sleep(0.1)
car1 = RacingCar('@μλμ°¨1')
car1.runCar()
μ€λ λ
threading.Thread(target=λ©μλorν¨μ, args=맀κ°λ³μ) νμ
import threading
import time
class RacingCar:
carName = ''
def __init__(self,name) :
self.carName = name
def runCar(self):
for _ in range(0,3):
carStr = self.carName + '~~λ¬λ¦½λλ€'
print (carStr, end="")
time.sleep(0.1)
car1 = RacingCar('@μλμ°¨1')
th1.threading.Thread(target = car1.runCar) #μ€λ λ μμ±
th1.start()
· λ©ν° νλ‘μΈμ±
μ€λ λ = cpu 1
μ€λ λ = cpu μ¬λ¬κ° (λ©ν°νλ‘μΈμ±) cpu μ½μ΄ μ¬λ¬κ° μ¬μ© , λλμ²λ¦¬ νμμ μλ ν₯μ
(μλ°μμλ λ©ν°μ€λ λκ° λμμ cpu μ¬λ¬κ° μ¬μ©/ λ©ν°μ€λ λ-λ©ν°νλ‘μΈμ± κ΅¬λΆ μμ)
import multiprocessing
import time
class RacingCar:
carName = ''
def __init__(self,name) :
self.carName = name
def runCar(self):
for _ in range(0,3):
carStr = self.carName + '~~λ¬λ¦½λλ€'
print (carStr, end="")
time.sleep(0.1)
if __name__ == "__main__"
car1 = RacingCar('@μλμ°¨1')
mp1 = multiprocessing.Process(target = car1.runCar)
mp1.start()
mp1.join()