티스토리 뷰

Programming/Python

python Class

Oth 2017. 4. 21. 13:49

클래스와 객체

클래스란 간단히 말해 똑같은 무엇인가를 계속 만들어낼 수 있는 설계 도면 같은 것이다. 그리고 객체라는 것은 그러한 틀로 찍어낸 것들을 뜻한다. 


객체와 인스턴스 


park = Programmer() 즉 Programmer 라는 클래스로 park을 만들었다고 하면 park은 객체이다. 그리고 park은 Programmer의 인스턴스이다. 즉 인스턴스라는 말은 어떤 클래스의 객체인지에 대해 즉 관계 위주로 설명할  때 사용된다. 

self 란?


self 란 말 그대로 자기 자신에 해당한다. 

class calc:

def sum(self,a,b):

result=a+b


cal1=calc()

cal1.sum(1,2)


위와 같은 함수가 클래스에 있다고 해보자. 이 때 self는 cal1 자신을 의미하는데 cal1.sum(1,2) 를 보면 알 수 있듯이 클래스를 전달하지 않아도 자동으로 전달되기 때문에 상관없다.  


__init__ 란?

클래스를 만들 때 실행되는 부분이라고 생각하면 간단하다. 

class Service:

a="asdfasdf"

def __init__(self,name):

self.name=name


def sum(self,a,b):

result=a+b


__init__ 를 추가함에 따라 원래


per1 = Service() 에서 per1 = Service("이름") 작성해야한다. 



클래스의 상속


class 상속받을 클래스명(상속할 클래스명)


메서드 오버라이딩 


상속받을 대상과 상속할 클래스가 이름이 같지만 다른 기능을 해야할 때가 있다. 이 때 사용하는 것이 매서드 오버라이딩이다. 이러한 식으로 다르게 함수를 설정하고 싶다면 그냥 상속 받을 대상인 클래스에 같은 이름의 메소드를 다시 구현해주면 된다. 


연산자 오버로딩 


# house.py class HousePark: lastname = "박" def __init__(self, name): self.fullname = self.lastname + name def travel(self, where): print("%s, %s여행을 가다." % (self.fullname, where)) def love(self, other): print("%s, %s 사랑에 빠졌네" % (self.fullname, other.fullname)) def __add__(self, other): print("%s, %s 결혼했네" % (self.fullname, other.fullname)) class HouseKim(HousePark): lastname = "김" def travel(self, where, day): print("%s, %s여행 %d일 가네." % (self.fullname, where, day)) pey = HousePark("응용") juliet = HouseKim("줄리엣") pey.love(juliet) pey + juliet


여기서 pey + juliet  부분이 실행되면 + 에 따라 __add__ 부분이 자동실행된다. 이 때 self 부분에는 pey가 other에는 juliet이 들어가게된다. 














'Programming > Python' 카테고리의 다른 글

Python map 함수  (0) 2017.04.29
python if 문  (0) 2017.04.27
python 파일 입출력  (0) 2017.04.17
python string  (0) 2017.04.09
powershell tutorial ExecutePolicy  (0) 2017.03.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함