μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- μ°μ μμ ν
- dfs
- dropout
- λ¬Έμμ΄
- 2023
- λ€μ΅μ€νΈλΌ
- λΆν μ 볡
- κ°λμ λ§λ‘
- lazy propagation
- NEXT
- BFS
- DP
- μκ³ λ¦¬μ¦
- λ―Έλλ_νμ¬μ_κ³Όκ±°λ‘
- pytorch
- νλ‘μ΄λ μμ¬
- back propagation
- μΈκ·Έλ¨ΌνΈ νΈλ¦¬
- μλ°μ€ν¬λ¦½νΈ
- λλΉ μ°μ νμ
- tensorflow
- νκ³ λ‘
- c++
- λ°±νΈλνΉ
- κ°λμ_λ§λ‘
- Overfitting
- μ‘°ν©λ‘
- μ΄λΆ νμ
- ν¬λ£¨μ€μΉΌ
- object detection
- 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 ν¨ν€μ§ (0) | 2023.06.26 |
Pythonμ Generatorμ λνμ¬ (2) | 2023.01.10 |
Pythonμ Iteratorμ λνμ¬ (0) | 2023.01.09 |