loading
본문 바로가기
Python/딥러닝

[밑바닥 딥러닝] 1장.

by 원쿤짱쿤 2022. 7. 25.
반응형

 

클랙스의 정의에는 __init__ 라는 특별한 메서드가 있는데,

클래스를 초기화하는 방법을 정의한다.

 

이런 초기화용 메서드를 생성자 라고도 하며, 클래스의 인스턴스가 만들어 질 때 한번만 불립니다.

 

또한 파이썬에서는 메서드의 첫 번째 인수로 자신(자신의 인스턴스)을 나타내는 self를 명시적으로 쓴는것이 특징이다.

 

<간단한 class 생성하기>

class Man:
    def __init__(self,name):
        self.name = name
        print("Initialized!")
        
    def hello(self):
        print("Hello" + self.name + "!")
    
    def goodbye(self):
        print("Good-Bye" + self.name + "!")

m = Man("David")
m.hello()
m.goodbye()

#결과값 : 
Initialized!
HelloDavid!
Good-ByeDavid!

-설명 :

Man 이라는 새로운 클래스를 정의합니다.

그리고 Man 클래스에서 m 이라는 인스턴스(객체)를 생성합니다.

Man의 생성자(초기화 메서드)는 name이라는 인수를 받고 그 인수로 인스턴스 변수인 self.name을 초기화합니다.

여기서 인스턴스 변수는 인스턴스별로 저장된 변수입니다.

파이썬에서는 self.name처럼 self 다음에 속성 이름을 써서 인스턴스 변수를 작성하거나 접근할 수 있습니다.

 

 

여기서 실험 1....

 

m이라는 인스턴스를 생성해서 인수를 넣어도 인수로 받는것을 정의안하면 소용없음.

class Man:
    def __init__(self,name):
        self.name = "won-jae"
        print("Initialized!")
        
    def hello(self):
        print("Hello" + self.name + "!")
    
    def goodbye(self):
        print("Good-Bye" + self.name + "!")

m = Man("David")
m.hello()
m.goodbye()

#결과값
Initialized!
Hellowon!
Good-Byewon!

2번째실험.

 

self라는것을 a로 바꿨는데 잘된다..  뭐지.

class Man:
    def __init__(a,name):
        a.name = name
        print("Initialized!")
        
    def hello(self):
        print("Hello" + self.name + "!")
    
    def goodbye(self):
        print("Good-Bye" + self.name + "!")

m = Man("David")
m.hello()
m.goodbye()

#결과값
Initialized!
HelloDavid!
Good-ByeDavid!

 

 

Tip ! 1

파이썬은 객체지향 언어이다.

객체지향 언어란 서로 연관되어있는 데이터(변수)와 연산(함수)를 그룹핑 한것이다.

함수와 변수가 많아짐에 유지보수가 쉽지않고, 추가적으로 여러개의 목적이 다른 코드들이 섞여 

연관되어있던 코드 자체를 다른곳에 사용하지못한점에 객체지향언어가 생긴것.

 

 

Tip! 2

__init__함수

init이라는 단어는 "시작하다" 이다.

클래스를 선언하는 순간에 실행되는 함수입니다.

 

m = Man("david") 라고 할때

__init__함수(생성자)안의 내용만 실행하는것이다.

 

Self 는 클래스를 저장할 변수 이다.

 

 

실험 3.

 

m = Man() 라고 했을때

self = a 즉 ...

a.name = self.name 이 되고 , 

생성자에 self.name = David 라고 하였으니..

print(m.name)  = David가 된다.

 

class Man:
    def __init__(self,name):
        self.name = name
        print("Man 생성자 시작.")

m = Man("David")
print(m.name)

#결과값
Man 생성자 시작.
David

 

생각정리...

생성자는 초기화 하는 메소드 이다.

객체 생성하면서 자동으로 생성자를 먼저 실행시킨다.

***객체를 만들때 객체가 반드시 해야될 일이 있다면 , 그것을  별도의 메소드로 만들어서 사용자가 절차를  숙지하도록 하는것이 아니라 , 생성자에 절차를 포함시켜서

객체를 사용하는 사람이  그객체를 사용함에 있어서 숙지해야하는 절차를 더 줄이고 , 놓치지않을 수 있도록 생성자화

하는것이다.  -생활코딩-

넘파이

넘파이는 외부 라이브러리이다.

외부라는 것은 표준파이썬에는 포함되지 않는다는것이다.

 

우선 넘파이 라이브러리를 사용할수있도록 import 해야한다.

 

직역: numpy를 np라는 이름으로 가져와.

import numpy as np

 

넘파이 배열 :

np.array()