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
'블록체인 > [파공블]파이썬으로 공부하는 블록체인' 카테고리의 다른 글
0. Python 기초 - 내 홈페이지 만들기(Flask) (0) | 2022.06.09 |
---|---|
0. Python 기초 - DB 이해하고 만들기(sqlite3) (0) | 2022.06.09 |
[파공블] 0. Python 기초 - 함수만들기 (0) | 2022.06.07 |
[파공블] 0. Python 기초 - 준비사항 (0) | 2022.06.07 |
[파공블] 0. Python 기초 - Intro (0) | 2022.06.06 |
댓글