728x90
반응형
☝ arguments & keyword arguments
arguments(positional arguments)
인자가 많을 때 사용 ➡ *args
keyword arguments
keyword arguments가 많을 때 사용 ➡ **kwargs
def plus(a, b, *args, **kwargs):
print(args)
print(kwargs)
return a + b
plus(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, happy=True, new=True, year=True)
# (3, 4, 5, 6, 7, 8, 9, 10) 튜플 형태
# {'happy': True, 'new': True, 'year': True} 딕셔너리 형태
많은 수 계산기
def plus(*args):
result = 0
for number in args:
result += number
print(result)
plus(1, 2, 5, 6, 4, 3, 5, 4, 1, 6, 2, 7, 7, 8, 2, 9, 1, 6)
# 79
✌ 객체지향 프로그래밍
class
blueprint(설계도)와 비슷함 ➡ Car는 class
instance
설계도로 만든 살아있는 결과물, 설계도로 만든 제품이라고 생각하기 ➡ proche, ferrari, mini는 instance
class Car():
wheels = 4
doors = 4
windows = 4
seats = 4
porche = Car()
porche.color = "Red"
ferrari = Car()
ferrari.color = "Yellow"
mini = Car()
mini.color = "White"
method
class안에 있는 function
💥 method의 첫번째 argument는 method를 호출하는 instance 자신(파이썬의 특징)
➡ self argument를 잊으면 안됨✨
➡ porche.start()는 porche.start(porche)와 같음
class Car():
wheels = 4
doors = 4
windows = 4
seats = 4
def start(self):
print(self.doors)
print("I started")
porche = Car()
porche.color = "Red"
porche.start()
# 4
# I started
dir은 class의 모든 properties를 보여줌
class Car():
wheels = 4
doors = 4
windows = 4
seats = 4
print(dir(Car))
'''
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__',
'__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
'doors', 'seats', 'wheels', 'windows']
'''
porche를 print할때 호출됐던 __str__을 override(재정의)하기
porche를 print할때마다 Car with {self.wheels} wheels 출력
class Car():
wheels = 4
doors = 4
windows = 4
seats = 4
def __str__(self):
return f"Car with {self.wheels} wheels"
porche = Car()
print(porche)
# Car with 4 wheels
class를 만들었을 때 바로 만들어지는 method인 __init__ 메소드 재정의하기
class Car():
def __init__(self, **kwargs):
self.wheels = 4
self.doors = 4
self.windows = 4
self.seats = 4
self.color = kwargs.get("color", "black")
self.price = kwargs.get("price", "$20")
def __str__(self):
return f"Car with {self.wheels} wheels"
porche = Car(color="green", price="$40")
print(porche.color, porche.price)
mini = Car()
print(mini.color, mini.price)
# green $40
# black $20
inherit(상속)과 extend(확장)
class Car():
def __init__(self, **kwargs):
self.wheels = 4
self.doors = 4
self.windows = 4
self.seats = 4
self.color = kwargs.get("color", "black")
self.price = kwargs.get("price", "$20")
def __str__(self):
return f"Car with {self.wheels} wheels"
class Convertible(Car): #Convertible 클래스는 extend된 Car class를 가지고 있음
def __init__(self, **kwargs): # 상속과 확장
super().__init__(**kwargs) # super()는 부모클래스 호출하는 함수!
self.time = kwargs.get("time", 10)
def take_off(self):
return "taking off"
def __str__(self):
return f"Car with no roof"
porche = Convertible(color="green", price="$40")
print(porche.color)
# green
💡 python은 띄어쓰기와 tab을 섞어서 사용하면 오류 가능성 ⬆
💡 tuple 괄호로 있는 자료구조를 말함
반응형