티스토리 뷰

beginner/파이썬 기초

클래스

johh 2019. 4. 29. 00:23
Untitled22

클래스란?

객체지향은 프로그래밍의 꽃이다.
클래스는 객체지향을 구현함에 있어 중요한 부분이다.
클래스는 비슷한 속성을 가진 객체를 묶는 큰 틀이라고 생각하면 된다.

클래스 변수

In [1]:
class Customer:
    welcome = '반갑습니다'

클래스 Customer는 '반갑습니다'라는 값을 가진 welcome 라는 변수를 가지고 있다.
이를 호출하려고 하면 해당 클래스의 인스턴트를 통해서만 가능하다.

In [2]:
Customer.welcome
Out[2]:
'반갑습니다'

클래스 함수

In [5]:
class Customer:

    def info(self, id):
        print("id : %d" % id)

new_Customer = Customer()
new_Customer.info(2011251)
id : 2011251

info 함수는 id를 입력값으로 받고 있는 클래스 함수이다.
self는 이 함수를 호출하는 객체가 이 클래스의 객체인지 확인하는 장치이다.
새로운 인스턴스 new_Customer을 생성한뒤, 2011251이라는 입력값을 주어 info함수를 출력하면 2011251을 리턴받고 있다.

In [7]:
class Customer:
    welcome = "반갑습니다"


    def info(self, id):
        print("id : %d" % id)

new_Customer = Customer()
print(Customer.welcome)
new_Customer.info(2011251)
반갑습니다
id : 2011251

클래스 self

In [15]:
class Member:

    def setId(self,id,password):
        self.id = id
        self.password = password
    def getId(self):
        print ('아이디(id) : %s, 비밀번호(password) : %d' % (self.id, self.password))

New_Member = Member()
New_Member.setId('JFun', 2011251)


New_Member.getId()
아이디(id) : JFun, 비밀번호(password) : 2011251

setId(self,id,password):

클래스 함수의 첫 번째 인수로 self를 써 줘야만 해당 함수를 인스턴스의 함수로 사용할 수 있게 된다.
self는 간단히 말하면 이 함수를 부르는 객체가 해당 클래스의 인스턴스인지 확인해 주기위한 장치이다.
하지만 단순히 확인하는 것에서 나아가 self를 이용하여 객체 내의 정보를 저장하거나 불러올 수 있다.

New_Member.setId('JFun', 2011251)

New_Member이라는 Member의 인스턴스를 이용하여 New_Member.setId('JFun', 2011251)를 수행하면 self.Id에는 'JFun'이 self.year에는 2011251값이 저장된다.
이때 self는 New_Member이라는 객체이다.

New_Member.getId()

New_Member 객체를 이용하여 getId함수를 호출하게 되면 위에서 설정한 self.Id와 self.password 값이 출력되는 것을 볼 수 있다.
즉, getId()라는 함수는 self를 통해서 New_Member에 해당하는 Id와 password를 리턴하게 된다.

클래스 init

Member클래스의 인스턴스를 추가해 getId()를 호출 할 때마다 setId()를 이용해 id와 password를 설정해줘야 한다.
이럴때 인스턴스 생성 초기에 변수를 지정해 주는 것을 도와주는 것이 init 함수 이다.
init 함수는 초기화메서드 혹은 생성자라고 불리며 이 함수의 인자들은 다음과 같이 인스턴스를 만들 때 함께 선언해주어야 한다
인스턴스 = 클래스 (변수1, 변수2, ...)

In [19]:
class Member:

    def __init__(self, id, password):
        self.id = id
        self.password = password
        print ("새로운 Member 인스턴스가 생성되었습니다.")

    def getId(self):
        print ("아이디(id) : %s, 암호(password): %d" % (self.id,self.password))

New_Member=Member('JFun',2011251)

New_Member.getId()
새로운 Member 인스턴스가 생성되었습니다.
아이디(id) : JFun, 암호(password): 2011251

New_Member=Member('JFun',2011251)

이렇게 새로운 인스턴스를 만들었더니
'새로운 Member 인스턴스가 생성되었습니다.' 가 출력되는 것을 볼 수 있다.
즉, 새로운 인스턴스가 만들어 질 때 init 함수가 호출된다는 것을 알 수 있다.

클래스 상속

자식 클래스는 부모 클래스가 가진 함수변수 를 물려받아 그대로 사용할 수 잇다.

In [21]:
class Person:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def aboutMe(self):
        print ("이름 : %s, 나이: %d" % (self.name,self.age))

        
class Student(Person):

    def school(self):
        print ("goorm school")

per = Student("JFun",30)
per.aboutMe()
이름 : JFun, 나이: 30

위의 예시를 보면 Person 클래스의 init 함수를 통해 이름과 나이를 초기값으로 받고, aboutMe라는 함수를 통해 이름과 나이를 출력하는 것을 볼 수 있다.
Student 클래스를 보면
class Student(Person):
과 같은 방법으로 Person 클래스를 상속받았다.
그렇기에 하위에 아무런 함수가 없더라도 aboutMe 함수를 호출하면 이름과 나이가 출력되는 것을 볼 수 있다.

메서드 오버라이딩

단순히 상속받는 것 뿐만 아니라 부모 클래스에 있는 함수를 변형하여 사용하는 것도 가능하다.

In [22]:
class Person:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def aboutMe(self):
        print ("이름 : %s, 나이: %d" % (self.name,self.age))

        
class Student(Person):

    def aboutMe(self):
        print ("goorm school")

per = Person("JFun",30)
per.aboutMe()
이름 : JFun, 나이: 30
In [23]:
stu = Student("JFun",40)
stu.aboutMe()
goorm school

Person과 Student 모두 aboutMe라는 함수를 가지고 있지만 Person에서 aboutMe 함수를 호출했을때는 이름과 나이가, Student에서 aboutMe 함수를 호출했을때는 goorm school이 출력되는 것을 볼 수 있다.
이렇게 부모 클래스의 메서드와 같은 이름을 가진 메서드를 자식 클래스에서 새롭게 구현하는 것을 메서드 오버라이딩 이라고 한다.

'beginner > 파이썬 기초' 카테고리의 다른 글

NLTK 토큰화, 태그  (0) 2019.05.19
스택(stack)&큐(Queue)기본개념  (0) 2019.04.09
장바구니 알고리즘  (0) 2019.03.05
Matplotlib  (0) 2019.02.19
NumPy_기타  (0) 2019.02.19
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함