반응형
[Python] Extends / super
- Extends 상속
- python에서 상속은 class 클래스명(상속받을 클래스명)으로 작성해준다.
- 28 : 메소드 재정의(오버라이딩)
- 40 : HandPhone에서 call메소드를 정의하지 않았어도 상속으로 인해 이용할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #-*- coding: utf-8 -*- ''' 상속 class 클래스명(상속받을 클래스명): pass ''' class Phone(object): #전화 거는 기능 def call(self): print u"전화를 걸어요" # Phone 클래스를 상속 받아서 클래스 정의하기 class HandPhone(Phone): # 이동중에 전화를 거는 메소드 def mobileCall(self): print u"이동중에 전화를 걸어요" # 사진 찍는 기능 def takePicture(self): print u"100만 화소의 사진을 찍어요" class SmartPhone(HandPhone): # 인터넷을 하는 기능 def doInternet(self): print u"웹서핑을 해요" # 사진 찍는 기능 재정의 def takePicture(self): print u"1000만 화소의 사진을 찍어요" if __name__ == '__main__': # Phone 객체 생성해서 참조값을 phone1 이라는 변수에 담기 phone1 = Phone() # HandPhone 객체 생성해서 참조값을 phone2 라는 변수에 담기 phone2 = HandPhone() phone3 = SmartPhone() phone1.call() print "-----" phone2.call() phone2.mobileCall() phone2.takePicture() print "-----" phone3.takePicture() #오버라이드한 메소드 | cs |
- super
- 상속받은 부모 클래스의 생성자를 호출하려면
1. 클래스명.__init__()
2. super(현재클래스명, self).__init__()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #-*- coding: utf-8 -*- ''' - 상속받은 부모 클래스의 생성자 호출하는 방법 1. 클래스명.__init__() 2. super(현재클래스명, self).__init__() ''' class Car(object): #가상의 엔진 engine=None #생성자 def __init__(self, engine): self.engine=engine #기능 def drive(self): if self.engine==None: print "엔진이 없어서 달릴수가 없어요" else: print "달려요" class SuperCar(Car): #생성자 def __init__(self, engine): #부모생성자(Car 생성자) 로 필요한 값을 넘겨준다. #super(SuperCar, self).__init__(engine) # phthon 2.7 문법 Car.__init__(self, engine) def driveFast(self): if self.engine==None: print u"엔진 객체가 없어서 달릴수가 없어요" else: print u"엄청 빨리 달려요!" if __name__ == '__main__': Car(u"엔진").drive() Car(None).drive() print "---------" SuperCar(u"엔진").driveFast() SuperCar(None).driveFast() | cs |
- Lamda함수
- python에서는 함수도 객체이므로 담을 수 있다.
- 변수에 담은 후 ()를 붙이면 함수 호출
- 9 : 전달된 인자를 함수로 간주한 후 호출할 수 있다.
- 53 : lamda함수를 만들어 변수에 담을 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #-*- coding: utf-8 -*- ''' - lambda 함수 익히기 ''' def printHi(): print "hi hi hi" def useFunction(f): # 전달된 인자를 함수로 간주하고 함수 호출하기 f() print u"useFunction() 함수가 리턴 합니다." # 인자로 전달받은 두수의 합을 리턴해주는 함수 def getSum(x, y): return x+y if __name__ == '__main__': # main 으로 실행했을때 실행순서가 들어오는곳 # python 에서는 함수도 객체이므로 변수에 담을수 있다. # 함수 호출 printHi() # 함수를 참조해서 변수에 대입 a = printHi # 변수에 대입된 함수의 참조값을 이용해서 함수 호출 가능 a() print "-------" # 함수를 호출하면서 함수의 참조값 전달하기 useFunction(a) print "----" result = getSum(10, 10) print "result :",result print "lambda 함수 정의해서 사용하기" ''' (lambda x, y: x+y)(10, 10) 는 javascript 에서 (function(x,y){ return x+y; })(10, 10) 과 같다 ''' print "lambda 함수 사용 결과:" ,\ (lambda x, y: x+y)(10, 10) # lambda 함수 만들어서 참조값 변수에 담기 myLam = lambda x, y: x*y print "myLam(10, 10) : ", myLam(10, 10) | cs |
반응형
'Language > Python' 카테고리의 다른 글
[Python] Except / File (0) | 2017.08.17 |
---|---|
[Python] Decorator (0) | 2017.08.16 |
[Python] Main / class / 생성자 / return (1) | 2017.08.16 |
[Python] 정규표현식(Regulation Express) / input (0) | 2017.08.16 |
[Python] if / for / while / operator (0) | 2017.08.10 |
댓글