태그된 제품에 대해 수수료를 받습니다.
파이썬에서 메소드(method)는 클래스(class)에 정의된 함수(function)
메소드는 특정 객체(object)에 대한 동작을 정의하며,
객체의 상태를 조작하거나 정보를 반환하는 등의 작업을 수행
메소드는 객체 지향 프로그래밍(OOP)에서 중요한 개념
메소드의 특징
1. 클래스 내부에 정의
메소드는 클래스 내부에 정의되며, 클래스의 인스턴스(객체)와 관련된 작업을 수행
2. 첫 번째 매개변수로 self
모든 인스턴스 메소드는 첫 번째 매개변수로 self를 가진다.
self는 해당 메소드가 호출된 인스턴스를 참조한다.
3. 인스턴스 메소드, 클래스 메소드, 정적 메소드
메소드는 인스턴스 메소드(instance method), 클래스 메소드(class method), 정적 메소드(static method)로 나뉜다.
메소드의 종류
인스턴스 메소드
클래스의 인스턴스에 속한 메소드로, 인스턴스 변수에 접근하거나 수정할 수 있다.
첫 번째 매개변수는 항상 self
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} says woof!")
my_dog = Dog("Buddy")
my_dog.bark() # 출력: Buddy says woof!
클래스 메소드
클래스 자체에 속한 메소드로, 클래스 변수를 조작할 수 있다.
첫 번째 매개변수는 cls이며, 클래스 메소드로 선언하려면 @classmethod 데코레이터를 사용
class Dog:
species = "Canis familiaris"
@classmethod
def change_species(cls, new_species):
cls.species = new_species
Dog.change_species("Canis lupus")
print(Dog.species) # 출력: Canis lupus
정적 메소드
클래스나 인스턴스 변수에 접근하지 않는 메소드
첫 번째 매개변수로 self나 cls를 받지 않으며, @staticmethod 데코레이터를 사용
class Math:
@staticmethod
def add(a, b):
return a + b
result = Math.add(5, 3)
print(result) # 출력: 8
메소드의 정의 및 호출
메소드를 정의할 때는 클래스 내부에 함수를 정의하고, 첫 번째 매개변수로 self를 명시
메소드를 호출할 때는 인스턴스 또는 클래스 이름을 사용하여 호출
예제: 자동차 클래스
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_description(self):
return f"{self.year} {self.make} {self.model}"
def read_odometer(self):
return f"This car has {self.odometer_reading} miles on it."
def update_odometer(self, mileage):
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
self.odometer_reading += miles
# 인스턴스 생성 및 메소드 호출
my_car = Car('Audi', 'A4', 2016)
print(my_car.get_description()) # 출력: 2016 Audi A4
my_car.update_odometer(23_500)
print(my_car.read_odometer()) # 출력: This car has 23500 miles on it.
my_car.increment_odometer(100)
print(my_car.read_odometer()) # 출력: This car has 23600 miles on it.
이 예제에서 Car 클래스는 자동차의 정보를 나타내며,
다양한 메소드를 통해 자동차의 상태를 관리할 수 있다.
get_description, read_odometer, update_odometer, increment_odometer는 모두 Car 클래스의 인스턴스 메소드
정리
메소드는 클래스 내부에 정의된 함수로,
객체 지향 프로그래밍의 중요한 구성 요소
객체의 상태를 조작하거나 정보를 제공하는 등의 다양한 작업을 수행할 수 있다.
태그된 제품에 대해 수수료를 받습니다.