Published 2021. 1. 20. 18:01

init(self)

  • 생성자, 클래스 인스턴스가 생성될 때 호출됨

  • self인자는 항상 첫번째에 오며 자기 자신을 가리킴

  • 이름이 꼭 self일 필요는 없지만, 관례적으로 self로 사용

  • 생성자에서는 해당 클래스가 다루는 데이터를 정의

    1. 이 데이터를 멤버 변수(member variable) 또는 속성(attribute)라고 함

 

클래스를 정의할 때 가장 먼저 정의하는 메쏘드이다.

클래스가 다루고자하는 데이터를 명시한다.

객체가 생성되는 시점에서 불리는 메쏘드.

가장 첫번째로 불리는 함수이다.

class Person:
    def __init__(self):
        print(self, 'is generated')

p1 = Person()
p2 = Person()

>> <__main__.Person object at 0x10fa466d0> is generated
>> <__main__.Person object at 0x10fa46f10> is generated

객체를 생성할 때 init이 불리는 함수를 부르고

메모리주소가 보이며 각각 다른 메모리에 두가지 객체가 생성이 되었다.

self가 무엇인지는 나중에 알아보자.

class Person:
    def __init__(self):
        print(self, 'is generated')
        self.name = 'Son'
        self.age = 30

p1 = Person()
p2 = Person()

print(p1.name, p1.age)

이렇게 생성할 경우 모든 객체의 name과 age는 Son과 30이 된다.

class Person:
    def __init__(self, name, age):
        print(self, 'is generated')
        self.name = name
        self.age = age

p1 = Person('Lee', 30)
p2 = Person('Son', 40)

print(p1.name, p1.age)
print(p2.name, p2.age)


>> <__main__.Person object at 0x10fb33550> is generated
>> <__main__.Person object at 0x10fb336a0> is generated
>> Lee 30
>> Son 40

 

class Person:
    def __init__(self, name, age=10): # 기본 파라미터 줄 수 있다.
        # print(self, 'is generated')
        self.name = name
        self.age = age

p1 = Person('Lee', 30)
p2 = Person('Son', 40)
p3 = Person('Kim')

print(p1.name, p1.age)
print(p2.name, p2.age)
print(p3.name, p3.age)

>>Lee 30
>>Son 40
>>Kim 10

기본 파라미터를 줄 수도 있다.


__init__ 에서 self 란?

self는 생성된 객체 자체를 가리킨다.

 

class person:
    def __init__(self, name, age):
        print('self :', self)
        self.name = name
        self.age = age

a = person('A', 30)
b = person('B', 40)

print(a)
print(b)

>> self : <__main__.person object at 0x10fb33d90>
>> self : <__main__.person object at 0x10fb33460>
>> <__main__.person object at 0x10fb33d90>
>> <__main__.person object at 0x10fb33460>

self 는 결국 객체 자체라는 것을 알 수 있다.

객체 안에서 말하는 self의 주소와  A의 주소가  같다는 것을 확인할 수 있다.

 

class person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def sleep(self):
        print(self.name, '는 잠을 잡니다.')

a = person('짱구', 30)
b = person('철수', 40)

a.sleep()
b.sleep()

>> <__main__.person object at 0x10fa46a60>
>> <__main__.person object at 0x10fa46d90>
>> 짱구 는 잠을 잡니다.
>> 철수 는 잠을 잡니다.

 

'📌 Python' 카테고리의 다른 글

Python - inheritance(상속)  (0) 2021.01.20
Python - method  (0) 2021.01.20
Python - class, object  (0) 2021.01.20
Python - import  (0) 2021.01.19
Python - lambda 함수  (0) 2021.01.19
복사했습니다!