init(self)
-
생성자, 클래스 인스턴스가 생성될 때 호출됨
-
self인자는 항상 첫번째에 오며 자기 자신을 가리킴
-
이름이 꼭 self일 필요는 없지만, 관례적으로 self로 사용
-
생성자에서는 해당 클래스가 다루는 데이터를 정의
- 이 데이터를 멤버 변수(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 |