강의노트 메서드
- 클래스
특별 메서드
__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
로그인 하면 댓글을 쓸 수 있습니다.