IT/파이썬

파이썬 클래스(Django)

thesse 2021. 5. 18. 11:23
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