self

2024. 3. 17. 00:19정보처리,전산/Python

반응형

self는 파이썬에서 객체 지향에서 현재 인스턴스를 가리키는 데 사용된다.

객체 지향 프로그래밍에서 클래스를 정의하고 그 클래스로부터 객체를 생성할 때, 각 객체는 클래스에 정의된 메서드와 속성을 가지는데 서드가 어떤 객체에 속하는지를 구분해야 한다. 이것이 바로 self가 하는 역할이다.

파이썬에서는 메서드의 첫 번째 매개변수로 self를 사용한다. 이 self는 현재 인스턴스를 나타내며, 메서드를 호출한 객체에 대한 레퍼런스로 사용되고 메서드가 호출될 때 파이썬이 자동으로 해당 객체를 self에 전달한다.

class MyClass:
    def __init__(self, x):
        self.x = x  #self는 현재 인스턴스를 가리키며 MyClass의 객체가 가진 x 인스턴스 변수를 기리킨다. 이변수는 init 메서드를 통해 초기화 됨
    def print_x(self):
        print(self.x) #현재 인스턴스의 x값을 출력

#MyClass 객체 생성
obj = MyClass(5)

#객체의 매서드를 호출함
obj.print_x() #출력5

 

 

 

객체 모델링

 

 Car 클래스를 정의하고, 자동차의 브랜드, 모델, 연도 등을 포함하는 속성과 함께, 주행 거리를 나타내는 odometer_reading 속성과 이를 조작하는 메서드를 구현하는 코드

 

Car 클래스의 인스턴스를 만들고, 해당 인스턴스의 속성 및 메서드를 사용하여 정보를 출력하고, 주행 거리를 업데이트하고 증가시킴

 

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0  # 초기 값은 0

    def get_descriptive_name(self):
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odometer(self):
        print(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


# Car 클래스의 인스턴스를 만든다.
my_car = Car('audi', 'a4', 2019)

# 클래스의 속성에 접근하여 값을 출력한다.
print(my_car.get_descriptive_name())  # 출력: 2019 Audi A4
my_car.read_odometer()  # 출력: This car has 0 miles on it.

# odometer_reading 속성을 업데이트한다.
my_car.update_odometer(100)
my_car.read_odometer()  # 출력: This car has 100 miles on it.

# odometer_reading 속성을 증가시킨다.
my_car.increment_odometer(50)
my_car.read_odometer()  # 출력: This car has 150 miles on it.

 

__init__ 메서드는 객체가 생성될 때 호출되며, 클래스의 속성  `make`, `model`, `year` 및 `odometer_reading` 속성을 초기화한다. `odometer_reading`은 주행 거리를 나타내며, 초기 값은 0으로 설정된다.

`get_descriptive_name` 메서드는 자동차의 설명적인 이름을 반환한다. 이 메서드는 자동차의 브랜드, 모델 및 연도를 조합하여 문자열을 생성하고 반환한다.

`read_odometer` 메서드는 자동차의 주행 거리를 출력한다. 주행 거리는 `odometer_reading` 속성의 값으로 나타낸다.

`update_odometer` 메서드는 주행 거리를 업데이트한다. 주행 거리는 입력된 값(`mileage`)으로 설정된다. 그러나 이미 기록된 주행 거리보다 작은 값으로 주행 거리를 업데이트하려고 하면 에러 메시지가 출력된다.

`increment_odometer` 메서드는 입력된 값(`miles`) 만큼 주행 거리를 증가시킨다.

 

 

 
 

반응형

'정보처리,전산 > Python' 카테고리의 다른 글

파일 쓰기 읽기 내용 추가  (0) 2024.04.26
Pandas 자료구조 Series,Dataframe  (0) 2024.04.07
python 폴더정리 코드  (0) 2024.03.09
ANYPANG (list & tuple)  (0) 2024.02.04
dict 값 갱신  (0) 2024.01.14