Python

[파이썬] 객체 (객체생성, 생성자, 변수선언)

praybe 2022. 3. 17. 16:53

객체란 클래스

파이썬에서는 어떻게 만들까? 

 

객체(속성을 가지고 다른 것과 식별 가능한 것)와 클래스(설계도: 필드+생성자+메서드)

 

 

객체생성

#클래스 하나에 함수 하나 
class Human: 
    
    def hello(self):
        return "안녕하세요"
    

#자바에서는 Human human = new Human();
#객체생성
human = Human() #우항은 생성자
human.hello()

출력값:

'안녕하세요'

 

함수에 self가 들어 가 있는데 이게 좀 생뚱맞아 보임

java에서 this란 자기자신 호출 

 

self는 default로 넣어줘야 함. class에 들어있는 함수라는 것을 구분시켜주는 것

다만 hello()로 마지막에 호출할때 self 넣어주지 않는다.

 

 

 

생성자

class Human: 
    
    #자바 생성자는 클래스 이름과 같은 함수고 리턴타입이 없음
    #생성자
    def __init__(self):
        print('__init__함수는 생성자')
    
human = Human()

출력값:

__init__함수는 생성자

생성자 함수: init

 

 

 

 

변수선언

class Human: 

    #클래스 내 변수선언
    #생성자 안에 self.변수선언 하면 된다.
    def __init__(self,finger):
        self.finger = finger  #이 부분이 핵심
        print("변수선언", finger)
    
human = Human(7) #비로서 7이 finger의 파라미터로 받아짐

출력값:

변수선언 7

 

 

 

 

class Human: 

    def __init__(self,finger):
        self.finger = finger 
        print("변수선언", finger)
        
    def hello(self):
        return self.finger
    
human = Human(7) 
human.hello()

출력값:

변수선언 7
Out[56]:
7

 

 

 

 

 

static

class Human: 
    
    total_count=0 #이게 static . static이란 인스턴스 라면 

    def __init__(self,finger):
        self.finger = finger 
        print("변수선언", finger)
        Human.total_count += 1
    
human1 = Human(7) 
human2 = Human(7) 
human3 = Human(7) 

human1.__class__.total_count

출력값:

변수선언 7
변수선언 7
변수선언 7
Out[62]:
3

인스턴스 변수는 self.finger로 생성하고 

스태틱 변수는 위에 클래스 변수라는 이름으로 함수 바깥에 표현하고 확인하려면 객체명.class하면 된다