300x250
반응형
클래스 선언
class Car():
wheels = 4
doors = 4
파이썬에서 모든 메서드는 하나의 argument 넣어짐
메서드 호출하는 인스턴스 자신(self)
그래서 파라메터 없는 메서드 만들면 오류남
class Car():
wheels = 4
doors = 4
# 메서드 정의
def start():
print("I started")
porche = Car()
porche.start() #porche.start(self)와 같음
----------------------------
TypeError: start() takes 0 positional arguments but 1 was given
============================
# 이렇게 self 넣어주면 해결됨
def start(self):
print("I started")
dir(클래스)
클래스 안의 요소들 리스트로 출력해줌
print(Car)
print(dir(Car))
------------------------
<class '__main__.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', 'start', 'wheels']
=========================
porche = Car()
print(dir(proche)) 해도 똑같이 나옴
extend
class Car():
wheels = 4
doors = 4
#인스턴스 생성될때 이걸로 초기화
def __init__(self, *args, **kwargs):
self.wheels = 1
self.doors = kwargs.get("doors","7") #Car(doors="n")으로 kwargs 받은거 없으면 디폴트값 7
# print(Car)할때 출력할 str 생성
def __str__(self):
return f"Car with {self.doors} doors and {self.wheels} wheels"
#Car 상속해서 Class 만들기
class Convertible(Car):
def take_off(self):
return "taking off"
# 덮어쓰지 않고 extend
def __init__(self, *args, **kwargs):
super().__init__(**kwargs) #이거 없으면 wheels는 날아가서 4로 나옴
self.doors = kwargs.get("doors","9")
# Car에 있던 __str__ 덮어씀 (덮어쓰지 않으려면 super 사용)
def __str__(self):
return f"no roof with {self.doors} doors and {self.wheels} wheels"
print(Car())
print(Convertible())
------------------------------
Car with 7 doors and 1 wheels
no roof with 9 doors and 1 wheels
300x250
반응형
'IT > 파이썬' 카테고리의 다른 글
파이썬 Flask (웹앱 만들기) 2 (0) | 2021.05.18 |
---|---|
파이썬 Flask (웹앱 만들기) 1 (0) | 2021.05.18 |
파이썬 패킹, 언패킹 (0) | 2021.05.17 |
파이참에서 모듈 추가하기 (0) | 2021.05.17 |
파이썬 기초2 반복문, 모듈 (0) | 2021.05.14 |