본문 바로가기
블록체인/[파공블]파이썬으로 공부하는 블록체인

[파공블] 0. Python 기초 - 객체만들기

by 일등박사 2022. 6. 8.
728x90

객체!!

프로그래밍 언어를 공부하며 항상 나오는 부분인데요!!

이후로 참 많이 활용되는 유용한 기능인데,

처음에 이해할때 쉽지 않은 부분인것 같습니다!!

 

우리가 사용하는 일상 언어와 비교해보아요!!

 

포유류! 하면 어떤 이미지가 떠오르시나요?

- 다리는 네개,

- 귀가 2개, 

- 입이 1개,

- 귀가 2개,

- 잠을잔다 

- 먹고

- 먹으면 소화하고

- 배변한다

 

저는 이정도가 떠오르는것 같습니다.

 

우리의 일상언어에서는 이미 이렇게 포유류 라는 객채가 선언된 것입니다!!

파이썬 코드로 바꿔볼까요!?

## 포유류 객채를 선언!!
class mammals(object):
    ## 포유류의 특징 선언
    def __init__(self):
        self.number_of_legs = 4 # 다리가 4개
        self.number_of_mouth = 1 # 입이 1개
        self.number_of_ears = 2 # 귀가 2개
        self.gender = "MALE" #  남성 (혹은 "FEMALE")
        
	## 표유류의 기능 : 잠잔다
    def sleep(self, sleeping_time)
        time.sleep(sleeping_time)  ## sleeping_time 만큼 움직이지 않고 잔다
        
        
	## 표유류의 기능 : 먹는다
    def eat(self, food):
    	digest(food)
        
	## 표유류의 기능 소화한다
    def digest(self, food):
    	food = food / 2 # 음식을 반으로 나눈다!!       
        
  	## 표유류의 기능 배변한다
    def dump(self, food):
    	food = 0 # 음식이 다 나가고 0이 된다!!

 

조금 이해가 되시나요??

__init__에서는 포유류의 기본 특징을 선언하고 

이후 함수만들기로 포유류의 기능등을 정의하였어요!

( self가 들어간것이 어색한가요!? 많이 보면 익숙해 질것이에요!!)

 

그럼 이번엔 우리가 배울 블록체인을 객채로 공부해 보아요!

## 블록체인이란 객채를 선언!
class Blockchain(object):
    ## 블록체인의 기본 특징 선언
    def __init__(self):
        self.chain = [] # chain은 빈 리스트이다!
        self.current_transaction = [] # 현재의 transaction은 빈 리스트이다
        self.nodes = set() # Node 목록을 set 형식으로 보관
        
	# 노드를 추가한다!
    def register_node(self, address): # 주소가 들어간다
        self.nodes.add(address) # 블록체인의 노드에 주소를 추가한다
        
    # 새로운 블록을 만든다!!
    def new_block(self, proof, previous_hash=None):
        # 지금의 블록에 이어질 새로운 블록을 만든다
        block = {
            'index' : len(self.chain)+1, ## 숫자 1을 더한 인덱스
            'timestamp' : time(), # 지금 시간 넣기
            'transactions' : self.current_transaction, ## 지금까지의 transaction을 넣기
        }
   
        self.current_transaction = [] # 새로 블록이 생겼으니 이제 transaction 은 다시 초기화 
        self.chain.append(block)      # 기존 체인에 블록을 넣어 연결!! 블록체인  
        return block
        
     # transaction이 추가된다   
     def new_transaction(self, sender, recipient, amount):
        # 거래내역을 추가하기
        self.current_transaction.append(
            {
                'sender' : sender, # 송신자
                'recipient' : recipient, # 수신자
                'amount' : amount, # 금액
                'timestamp':time() # 시간
            }
        )
        return self.last_block['index'] + 1

 

이해가 되시나요!? 

위의 블록체인 객채를 이해해 보자면

 

기본 특성은 __init__ 부분으로 

- chain이 있고

- transaction이 있고 

- node들을 가지고 있네요!

 

그리고 어떤 기능이 있는지 함수들을 보면 

- 노드를 추가하는 기능(register_node),

- 새로운 블록 만들기 기능(new_block), 

- 거래내역 추가하기 기능(new_transaction) 

이 있는 객체였습니다!!

 

어때요!? 객채가 무엇인지 느낌이 오시나요!?

 

이후 불록체인 공부 파트에서 

본격적으로 blockchain 객채를 선언하며

블록체인에 대하여 공부해보겠습니다!!!

 

 

728x90

댓글