Small Grey Outline Pointer Python :: 생성자 (초기화 메소드)
본문 바로가기
Dev./Python

Python :: 생성자 (초기화 메소드)

by sso. 2022. 7. 19.

 

생성자


클래스명() 을 생성자라고 하며, 이름 뒤에 소괄호가 있기 때문에 
메소드의 기능과 똑같다 하지만 리턴이 없기 때문에 메소드라고 부르지 않고 생성자라고 부른다
클래스에 있는 필드를 메모리에 할당해 주고 그 필드의 주소값을 가지고 돌아와야하기 때문에
개발자가 직접 리턴값을 작성하면 안된다


생성자의 역할
1. 해당 필드를 메모리(RAM)에 할당하고 할당된 필드의 주소값을 가져온다
2. 초기화 

 

 

자바 constructor (생성자)

파이썬 generator (생성자)

 

제너레이터는 이터레이터를 생성해주는 함수

제너레이터는 발생자

함수 안에서 yield를 사용하면 함수는 제너레이터가 되며 yield에는 값(변수)을 지정

 

 __init__ 메서드 : 초기화(initialize) 메서드

class Const:
    def __init__(self):
        print("new~")

def main():
    o1=Const() #객체 생성
    o2=Const()

main()

new~
new~

 

__init__ 메소드가 자동으로 호출 되었다(내가 직접 호출하는 것이 아님!)

n번 생성해도 n번 호출 된다

객체 하나 생성 될 때 마다 __init__ 생성자가 한번씩 호출 된다

객체 생성 단계의 마지막에 __init__ 메소드 자동 호출

 

 

 

 

class Const:
    def __init__(self,n1,n2):
        self.n1=n1 #self.n1은 인스턴스 변수, n1은 매개변수
        self.n2=n2
    def show_data(self):
        print(self.n1,self.n2)


def main():
    o1=Const(1,2)
    o2=Const(3,4)
    o1.show_data()
    o2.show_data()

main()

1 2

3 4

 

 


class Student:
    name = ''
    korean = 0
    english = 0
    math = 0
    
    def __init__(self, name, kor, eng, math):
        self.name = name
        self.korean = kor
        self.english = eng
        self.math = math
    def say_hello(self):
        return '안녕하세요 {}님'.format(self.name)

    def average(self):
        return (self.korean + self.english + self.math) / 3

hgd = Student('홍길동', 80, 85, 75) #인스턴스 이름 : hgd
print(hgd.math)

75
80.0
90.0

 

 

 


파이썬의 모든 값은 객체

n =1000
print(n.bit_length()) #변수 n에 담긴 정수도 객체라는 증거


f=3.14
print(f.is_integer()) #변수 f에 담긴 실수도 객체라는 증거

10
False

 

 

 

 

 

 

728x90

댓글