| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- back propagation
- νκ³ λ‘
- dropout
- λ€μ΅μ€νΈλΌ
- κ°λμ λ§λ‘
- tensorflow
- μ΄λΆ νμ
- νλ‘μ΄λ μμ¬
- μΈκ·Έλ¨ΌνΈ νΈλ¦¬
- μλ°μ€ν¬λ¦½νΈ
- μκ³ λ¦¬μ¦
- lazy propagation
- NEXT
- BFS
- λ¬Έμμ΄
- pytorch
- c++
- DP
- Overfitting
- λ―Έλλ_νμ¬μ_κ³Όκ±°λ‘
- λΆν μ 볡
- object detection
- dfs
- μ°μ μμ ν
- λ°±νΈλνΉ
- ν¬λ£¨μ€μΉΌ
- μ‘°ν©λ‘
- 2023
- κ°λμ_λ§λ‘
- λλΉ μ°μ νμ
- Today
- Total
Doby's Lab
μμμ ν λ, super().__init__()μ νμ§ μλλ€λ©΄? λ³Έλ¬Έ
μμμ ν λ, super().__init__()μ νμ§ μλλ€λ©΄?
λλΉ(Doby) 2023. 11. 11. 00:03π€ Intro
PyTorchλ₯Ό 곡λΆνλ€κ° νμ΄μ¬μμ OOPλ₯Ό νκ² λμμ΅λλ€.
μμ μ νμ΄μ¬μμ Classμ λν΄ κ³΅λΆν κ²κ³Ό μ΄λ² νκΈ°μ νκ΅μμ 곡λΆνκ² λ κ°μ²΄μ§ν₯νλ‘κ·Έλλ°(Java)μ ν΅ν΄ μμ(inheritance)μ λν κ°λ μ μκ³ μμμ΅λλ€.
λ λμκ° PyTorch νΈλ€λ§μ μν΄ νμ΄μ¬μ μμμ λν΄ μΆκ°μ μΌλ‘ μκ² λ μ λ€μ μ 리ν΄λ³΄κ³ μ ν©λλ€.
(+ κ°λ μ 리 μλλλ€. κ°λ μ λν΄μλ μ λ¦¬κ° μ λ λΆλΆλ€μ΄ λ§κΈ°μ κΆκΈν λΆλΆλ€λ§ μ 리νμ΅λλ€.)
ν΄λΉ ν¬μ€ν
μμλ λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°λ μμ ν΄λμ€μ Constructor(__init__ λ©μλ)μμ super().__init__()μ μ 무μ λ°λ₯Έ μ°¨μ΄λ₯Ό μμλ΄
λλ€.
π€ μμ ν΄λμ€μμ super().__init__()μ νμ§ μμΌλ©΄?
μλμ κ°μ΄ Person ν΄λμ€μ κ·Έμ λν μμ ν΄λμ€μΈ Studentκ° μλ€κ³ ν©μλ€.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def print_name(self):
print(f'this object\'s name is {self.name}')
def print_age(self):
print(f'this object\'s age is {self.age}')
def print_hello(self):
print('Say HELLO!')
class Student(Person):
def __init__(self, name, age, grade):
# super().__init__(name, age)
self.grade = grade
def print_grade(self):
print(f'this object\'s grade is {self.grade}')
μ¬κΈ°μ s1μ΄λΌλ Studentμ μ€λΈμ νΈλ₯Ό μ μΈνμ¬ print_age()λ₯Ό νΈμΆν΄ λ΄
μλ€.
s1 = Student('James', 12, 3)
s1.print_age()
κ²°κ³Όλ μλμ κ°μ μ€λ₯λ₯Ό μΆλ ₯ν©λλ€.
Cell In[33], line 10, in Person.print_age(self)
9 def print_age(self):
---> 10 print(f'this object\'s age is {self.age}')
AttributeError: 'Student' object has no attribute 'age'
Q: λΆλͺ
Personμμ μμμ λ°μλλ° μ ageλ₯Ό κ°κ³ μμ§ μμ£ ?
νμ΄μ¬μμλ Classμ λν΄μ __init__()μ κ°μ§κ³ μλλ° μ¬κΈ° Constructorμμ μ λ°μ μΌλ‘ ν΄λΉ Classμ λν νλλ₯Ό λͺ¨λ κ΄λ¦¬νκΈ° λλ¬Έμ
λλ€. (Javaμ λ¬λ¦¬ νλλ₯Ό μλμΌλ‘ λ겨주μ§λ μμ΅λλ€. λ¬Όλ‘ , κ·Έκ²λ μ κ·Ό μ§μ μμ λ°λΌ λ€λ¦
λλ€.) κ·Έλμ μμ ν΄λμ€μ __init__()μμ λΆλͺ¨ ν΄λμ€μ νλλ₯Ό κ°μ Έμ¬ μ μλλ‘ super().__init__()μ νΈμΆν΄μ£Όμ΄μΌ ν©λλ€.
μ¦, μ±κ³΅μ μΌλ‘ print_age()λ₯Ό μ€νμμΌ μ£ΌκΈ° μν΄μλ μ class μμ± μ½λμμ μ£Όμ λΆλΆμ νμ΄μ£Όλ©΄ λ©λλ€.
Q: λ§μ½μ Classμμ Constructor(__init__())μ μμ λ§λ€μ§ μλλ€λ©΄μ?
κ·Έλ¬ν κ²½μ°μλ νμ΄μ¬μ λΆλͺ¨ ν΄λμ€μ Constructorλ₯Ό μλμΌλ‘ νΈμΆν©λλ€. λΆλͺ¨ ν΄λμ€κ° μλ ν΄λμ€λΌλ©΄, νμ΄μ¬μ 'object'λΌλ ν΄λμ€λ₯Ό λΆλͺ¨ ν΄λμ€λ‘ λκ³ μμ±λ©λλ€. μλ μ½λκ° μ΄μ λν λ΅λ³μ΄ λ μ μμ΅λλ€.
# Sub Classμμ Constructorλ₯Ό callνμ§ μλλ€.
# λͺ
μμ μΌλ‘ ν΄λμ§ μλ κ²½μ°, μλμΌλ‘ λΆλͺ¨ ν΄λμ€μ μμ±μκ° νΈμΆλλ€.
class Stock:
def __init__(self, name, shares, price):
self.name = name
self.shares = shares
self.price = price
def cost(self):
return self.shares * self.shares
def sell(self, nshares):
self.shares -= nshares
class MyStock(Stock):
def panic(self):
self.sell(self.shares)
# μλμΌλ‘ λΆλͺ¨ ν΄λμ€μ Constructorκ° νΈμΆλκΈ° λλ¬Έμ λΆλͺ¨ ν΄λμ€μ
# Constructorλ₯Ό λ°λΌμ Objectλ₯Ό μμ±νλ€.
s = MyStock('GOOG', 100, 490.1)
s.sell(25)
print(s.shares)
75λ₯Ό μΆλ ₯ν©λλ€.
π€ λ©μλλ κ·ΈλΌ μλμΌλ‘ μμλλκ°?
λ€, λ§μ΅λλ€. νλλ __init__()μΌλ‘ μ격νκ² κ΄λ¦¬λλ λ°μ λ°ν΄ λ©μλλ μλμΌλ‘ μμλ©λλ€.
μκΉ μ Personκ³Ό Student ν΄λμ€μ λν΄ μμ±λ μ½λμμ μ£Όμμ΄ κ·Έλλ‘ λ μνλ₯Ό μκ°ν΄ λ΄
μλ€.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def print_name(self):
print(f'this object\'s name is {self.name}')
def print_age(self):
print(f'this object\'s age is {self.age}')
def print_hello(self):
print('Say HELLO!')
class Student(Person):
def __init__(self, name, age, grade):
# super().__init__(name, age)
self.grade = grade
def print_grade(self):
print(f'this object\'s grade is {self.grade}')
μ¬κΈ°μ λ€μ s1μ΄λΌλ μ€λΈμ νΈλ₯Ό μ μΈνμ¬ print_hello()λ₯Ό νΈμΆν΄ λ΄
μλ€.
s1 = Student('James', 12, 3)
s1.print_hello()
Say HELLO!
print_hello()λ νλμ μ°κ΄ μλ λ©μλλΌμ μ μΆλ ₯μ΄ λ©λλ€. μ¦, λ©μλλ μμμ΄ μλμΌλ‘ μ λλ€λ μκΈ°μ
λλ€.
π Summary
- νλλ μ€μ§ Constructorλ₯Ό ν΅ν΄ μ격νκ² μμμ λν κ΄λ¦¬λλ©°, μ¬μ©μμ μν΄ λΆλͺ¨ ν΄λμ€μ νλ(
super().__init__())λ₯Ό κ°μ Έμ€κ±°λ μλ‘μ΄ νλλ₯Ό 컨νΈλ‘€ν μ μλλ‘ ν©μλ€. - κ·Έλ¦¬κ³ , Constructorκ° μλ κ²½μ°μλ μλμΌλ‘ λΆλͺ¨ ν΄λμ€μ Constructorλ₯Ό μ€ννμ¬ λΆλͺ¨ ν΄λμ€μ νλλ₯Ό κ°μ§λλ‘ ν©λλ€.
- λ©μλλ μμμ μλμΌλ‘ μμμ΄ λ©λλ€. -> λ©μλ μ€λ²λ‘λ©, μ€λ²λΌμ΄λ© κ΄λ ¨ν΄μλ λ€μμ λ€λ£° μ΄μ κ° μκΈ΄λ€λ©΄ λ€λ£¨μ΄λ³΄κ² μ΅λλ€.
- λν,
super().__init__()κ³Όsuper().__init__(class_name, self)μ μ°¨μ΄μ μ λν΄μλ λ€μμ λ€λ£¨μ΄λ³΄κ² μ΅λλ€.
'Code about AI > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| λ¬Έμμ΄μ λ λ€μνκ² μ¬μ©ν μλ μμκΉ? (Raw String, docstring, λ¬Έμν) (0) | 2024.05.04 |
|---|---|
| return self, λλ₯Ό μ λ¦¬ν΄ ν΄μΌ ν κΉ? (Method Cascading) (0) | 2024.04.27 |
| (os λͺ¨λμ λ체νλ) pathlib ν¨ν€μ§ (1) | 2023.06.26 |
| Pythonμ Generatorμ λνμ¬ (2) | 2023.01.10 |
| Pythonμ Iteratorμ λνμ¬ (0) | 2023.01.09 |