강의노트 메서드

강의노트 • 조회수 727 • 댓글 0 • 수정 6개월 전  
  • 클래스
  • 클래스

특별 메서드

__init__

파이썬 클래스의 생성자(Constructor)는 __init__라는 특별한 메서드로 정의되며 인스턴스를 생성하면서 객체를 초기화하는 함수이다.

생성자는 self라는 첫 번째 인수를 갖는데, 이는 객체 자체를 나타낸다. 생성자 내부에서 self를 사용하여 객체의 속성을 초기화할 수 있다.

class Complex:
    def __init__(self, x, y):
        self.x = x
        self.y = y
z1 = Complex(3.0, -4.5)
z2 = Complex(1.0, 5)
z1.x, z1.y

위의 예제에서 Complex 클래스는 x과 y라는 두 개의 속성을 가지고 있으며, __init__ 메서드를 정의하여 이들을 초기화한다. z1과 z2는 각각 Complex 클래스를 기반으로 생성된 두 개의 객체이다. 생성자를 통해 x과 y 속성이 초기화되었다.

생성자를 사용하여 객체를 초기화함으로써 객체의 속성을 유효한 값으로 설정하고, 이후에 객체를 사용할 때 오류가 발생하는 것을 방지할 수 있다.

class IceCream:
    def __init__(self,name,price):
        self.name = name
        self.price = price
        print(name+'의 가격은'+str(price)+'원 입니다.')

obj = IceCream('월드콘', 1000) #인스턴스를 만듬. 객체 obj를 생성함
obj.name  #객체의 변수에 접근
obj.price
del obj
class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def eat(self, food):
        print(f"{self.name} is eating {food}.")
        
    def sleep(self):
        print(f"{self.name} is sleeping.")

위의 예제에서 Animal 클래스는 name과 age라는 속성을 가지고 있으며, eat과 sleep라는 메서드를 정의합니다. __init__ 메서드는 객체를 초기화하는데 사용되며, self는 객체 자체를 나타냅니다.

이제 Animal 클래스를 기반으로 객체를 생성할 수 있습니다.

dog = Animal("Max", 3)
cat = Animal("Lucy", 2)

print(dog.name) # Max
print(cat.age) # 2

dog.eat("bone") # Max is eating bone.
cat.sleep() # Lucy is sleeping.

위의 예제에서 dog와 cat은 각각 Animal 클래스를 기반으로 생성된 객체입니다. dog.name은 "Max"를 반환하며, cat.age는 2를 반환합니다. dog.eat("bone")은 "Max is eating bone."를 출력하고, cat.sleep()은 "Lucy is sleeping."를 출력합니다.

__del__

클래스의 소멸자(Destructor)는 객체가 소멸될 때 자동으로 호출되는 메서드이다.

소멸자는 __del__ 이라는 특별한 메서드로 정의되며, 객체가 메모리에서 제거되기 전에 자동으로 호출되며 일반적으로 객체를 삭제하기 전에 수행해야 할 정리 작업을 수행하기 위해 사용된다.

소멸자는 객체가 소멸될 때 필요한 마무리 작업을 수행할 수 있다. 예를 들어, 파일을 열었을 때 파일 핸들을 자동으로 닫아주는 등의 작업이 가능하다.

객체가 더 이상 필요하지 않은 경우에는 del 예약어를 사용하여 수동으로 삭제할 수 있다.

class IceCream:
    def __init__(self,name,price):
        self.name = name
        self.price = price
        print(name+'의 가격은'+str(price)+'원 입니다.')
    def __del__(self):
        print(self.name+'IceCream 객체가 소멸됩니다.')

obj1 = IceCream('월드콘', 1000)
obj2 = IceCream('누가바', 500)
obj1.name
obj1.price
del obj1
del obj2

위의 예제에서 IceCream 클래스는 name과 price라는 두 개의 속성을 가지고 있다. __del__ 메서드를 정의하여 객체가 삭제될 때 객체의 이름을 출력한다.

obj1과 obj2는 각각 IceCream 클래스를 기반으로 생성된 두 개의 객체이다.

del 예약어를 사용하여 obj1과 obj2를 수동으로 삭제하면, 소멸자가 자동으로 호출된다.

__add__ ; __sub__ ; __mul__ ;__div__ ;__truediv__ ;

인스턴스 사이에 덧셈 작업이 실행되는 메서드이다.

class Money:
   def __init__(self, money):
      self.money = money
   def __add__(self, other):
      return self.money + other.money
   def __repr__(self):
     return '가지고 있는 돈은 '+str(self.money) 

m1 = Money(50)
m2 = Money(60)
repr(m1)
m1 + m2
m1.money

__repr__

출력하는 함수이다.

__dict__

인스턴스 변수를 디셔너리 타입으로 표현한다.

__str__

print()함수를 이용하여 인스턴스를 표현한다.

class Complex:
    import numpy as np
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.r = np.sqrt(x**2 + y**2)
        self.theta = np.arctan(y/x)
        
    def __add__(self, other):
       self.x = self.x + other.x
       self.y = self.y + other.y
       return self.x, self.y
       
    def __repr__(self):
       return f'z = ({self.x}, {self.y})'
       
    def __str__(self):
       return f'z = ({self.r}, {self.theta})'
       
z1 = Complex(3.0, -4.5)
z2 = Complex(1.0, 5)
z1.x, z1.y
z1 + z2
이전 글
다음 글
댓글
댓글로 소통하세요.