본문 바로가기
대학원 공부/computer science

Python : Basic : Class 기초

by 월곡동로봇팔 2019. 12. 1.

Class


  • 정의 : 객채지향프로그래밍에서 지향하는 구조, 과자 틀과 비슷하다. 클래스(class)란 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면이고(과자 틀), 객체(object)란 클래스로 만든 피조물(과자 틀을 사용해 만든 과자)을 뜻한다.
  • 특징 : class로 정의한 object, 객체마다 고유한 성격을 가진다는 것이다. 과자 틀로 만든 과자에 구멍을 뚫거나 조금 베어 먹더라도 다른 과자에는 아무 영향이 없는 것과 마찬가지로 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않는다. -> class를 지향하면서 함수의 재사용을 높이는 것이 중요하다
  • 유의사항 : class 안에서 method를 정의할 때, 이는 함수 정의할 때도 똑같겠지만, method, function 둘 다, 기능을 최소 하나의 기능으로 가져야 한다. 그래야 재사용이 가능하다.

 

 

모든 class들은 Python의 최상위 부모 class인 object의 class를 상속받아 생성된다.

따라서 object의 dir, 속성들의 list들을 보여주면, 다른 class들과 유사하다는 것을 알 수 있다.

이는 우리가 class를 정의할 때, 자동으로 object의 속성을 그대로 상속받는 것을 의미한다.

 

즉, 항상 생각해야할게 class는 틀이고, 여기에서 속성을 우리가 선택하여 상속할 수 있다.

 

__init__ method


__init__는 생성자 method다. 처음 class를 생성할 때, 우리는 object를 상속받아서 이미 __init__가 형성이 된다.

 

가끔 모듈보면, class {class이름}: 이라고 적혀있고  __init__ method 없이 구성되있는 경우가 있다.

이는 class 에서 객체를 생성한 후, 함수로 변수를 받은 후 진행한다.

 

만약 위와 같이 __init__ method를 이용하여 변수들을 정의해주었다면, 이는 새롭게 정의한 것이기 때문에

class를 통해 객체를 선언할 경우, __init__에서 정한 변수를 모두 넣어주어야 한다.

 

실제로 위와 같은 error를 선언하게 된다.

 

class Calculator :
    """
    class Calculator is calculator in our realthis class, and satisfied your mood. 

    """
    # def __init__(self, num1, num2):
    #     self.num1 = num1
    #     self.num2 = num2

위와 같은 방법으로 생성해주면 된다. 여기서 self가 계속 나올텐데, self는 class에서 생성된 객체들이 변수들을 불러올 때, 자기자신 == 객체를 부르는 말로, 객체에서 변수를 설정할 때 같이 쓰인다.

 

그래서 self 가 있으면, 객체를 의미하므로, self가 존재하면 무조건 () 열어서 객체임을 알려주어야 한다.

 

__str__ method


class Calculator :
    """
    class Calculator is calculator in our realthis class, and satisfied your mood. 

    """
    # def __init__(self, num1, num2):
    #     self.num1 = num1
    #     self.num2 = num2
    
    def __str__ (self):
        return("class Calculator is calculator in our realthis class, and satisfied your mood.")

cal = Calculator()
print(cal)

__str__은 class가 어떤 것인지를 의미할 때, 적어주는 것이라고 우리들끼리 약속을 한 것이다.

 

따라서 이 class에 대한 정보를 적어주고 싶을 때, 따로 __str__을 해주어 정의해주고, 객체를 출력해보면 __str__출력된다.

 

 

 

__eq__ method


__eq__ 은 두 개의 객체들끼리 같은지 다른지를 알려주는 method다. 따라서 두 개의 다른 객체들을 논리연산자로 

계산을 해주면, 따로 __eq__ 를 정의해주지 않아도 True, False를 알려준다.

 

 

예제 class 정의해보기

 

# class 생성해보기


class Calculator :
    """
    class Calculator is calculator in our real this class, and satisfied your mood. 

    """
    # def __init__(self, num1, num2):
    #     self.num1 = num1
    #     self.num2 = num2

    def __str__ (self):
        return("class Calculator is calculator in our realthis class, and satisfied your mood.")

    def add(self, num1, num2):
        """
		calculator 에서 덧셈 함수
        """
        try:
            return (num1 + num2)
        except Exception as e:
            print(e)
    
    def minus(self, num1, num2):
        try:
            return (num1 - num2)
        except Exception as e:
            print(e)
            
    def mul(self, num1, num2):
        try:
            return (num1 * num2)
        except Exception as e:
            print(e)

    def div(self, num1, num2):
        """
		calculator 에서 divide 해주는 함수, num2가 0이면 Error Message 출력!
        """
        try:
            return (num1 / num2)
        except ZeroDivisionError as e:
            print('Error : ',e)
    

'대학원 공부 > computer science' 카테고리의 다른 글

Open Source : Visual Studio Code 단축키  (0) 2019.12.01
Python : basic : public, protected, private  (0) 2019.12.01
Linux : Duckdns  (0) 2019.11.26
Linux : Google API 써보기  (0) 2019.11.26
Big Data : Spark : SparkSession  (0) 2019.11.23

댓글