성장일기/파이썬

[python] self 매개변수 self.xxx __init__(self) 이해하기

지추월자 2023. 6. 29. 10:43
반응형

self는 파이썬에서 클래스의 인스턴스를 참조하는 데 사용되는 특별한 매개변수입니다. 클래스의 메서드에서는 첫 번째 매개변수로 self를 사용해야 합니다.

self 매개변수는 클래스의 인스턴스를 참조하기 위해 사용됩니다. 클래스의 인스턴스를 생성하면, self 매개변수는 해당 인스턴스를 참조하게 됩니다. 이를 통해 클래스의 메서드에서 인스턴스 변수에 접근하거나, 다른 메서드를 호출할 수 있습니다.

예를 들어, 다음과 같이 Person 클래스를 정의하고, __init__() 메서드에서 self 매개변수를 사용하여 인스턴스 변수 name과 age를 초기화할 수 있습니다.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print("Hello, my name is", self.name, "and I am", self.age, "years old.")

person1 = Person("Alice", 25)
person2 = Person("Bob", 30)

person1.say_hello()
person2.say_hello()

위 코드는 Person 클래스를 정의하고, __init__() 메서드에서 self 매개변수를 사용하여 name과 age 인스턴스 변수를 초기화합니다. say_hello() 메서드에서도 self 매개변수를 사용하여 인스턴스 변수 name과 age를 참조하고, 인사말을 출력합니다.

마지막으로, person1과 person2 객체를 생성하고, say_hello() 메서드를 호출하여 인사말을 출력합니다.

따라서, self 매개변수는 클래스의 인스턴스를 참조하기 위해 사용되며, 클래스의 메서드에서는 첫 번째 매개변수로 self를 사용해야 합니다.

만약 self 매개변수를 사용하지 않는다면 어떻게 되는지 보시죠 

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello():
        print("Hello, my name is", name, "and I am", age, "years old.")

person1 = Person("Alice", 25)
person2 = Person("Bob", 30)

person1.say_hello()
person2.say_hello()

위 코드는 Person 클래스를 정의하고, __init__() 메서드에서 name과 age 인스턴스 변수를 초기화합니다. say_hello() 메서드에서는 self 매개변수를 사용하지 않고, name과 age 인스턴스 변수를 직접 참조하려고 합니다.

하지만, say_hello() 메서드에서 name과 age 인스턴스 변수를 직접 참조할 수 없으므로, 에러가 발생합니다.

따라서, 파이썬에서 클래스의 메서드에서 self 매개변수를 사용하지 않으면, 해당 메서드에서는 클래스의 인스턴스를 참조할 수 없으므로, 인스턴스 변수에 접근하거나, 다른 메서드를 호출할 수 없게 됩니다.

 

[python] __init__()메서드란 무엇인가 확실하게 알고 쓰자! 있고 없고 차이점

__init__() 메서드는 클래스의 인스턴스가 생성될 때 자동으로 호출되는 특별한 메서드입니다. 이 메서드를 사용하여 인스턴스 변수를 초기화할 수 있습니다. 당연히 클래스를 정의하지 않고 __init

nuri-go.tistory.com

반응형