属性错误:'Block'对象没有属性"发件人"



我正在尝试使用python创建自己的区块链。

我拿了这个源代码,我正在尝试调整它以适应我需要的东西。 我的代码:

import datetime
import hashlib

class Block:
def __init__(
self,
previous_block_hash,
data,
timestamp,
sender,
):
self.previous_block_hash = previous_block_hash
self.data = data
self.timestamp = timestamp
self.hash = self.get_hash()
self.sender = self.get_sender()
@staticmethod
def create_genesis_block():
return Block('0', '0', datetime.datetime.now(), '')
def get_sender(self):
self.sender = input('Enter senders ID number: ')
return self.sender
def get_hash(self):
header_bin = str(self.previous_block_hash) + str(self.data) 
+ str(self.timestamp) + str(self.sender)
inner_hash = 
hashlib.sha256(header_bin.encode()).hexdigest().encode()
outer_hash = hashlib.sha256(inner_hash).hexdigest()
return outer_hash

blockchain = [Block.create_genesis_block()]
length_of_blockchain = len(blockchain)
print ('The genesis block has been created.')
print ('Hash: %s' % blockchain[0].hash)
blockchain.append(Block(blockchain[length_of_blockchain - 1].hash,
'Blockchain Number: '[length_of_blockchain - 1],
datetime.datetime.now(), Block.get_sender()))

我想将发送方和接收方添加到块中。所以,我首先从一个开始,那就是发件人。我在这里不断收到此错误,但不确定如何解决它。一切都在本地进行测试,以确保所有内容都检查出来,然后我将添加本机反应。希望有人能帮助我

您正在尝试在初始化之前访问self.sender。重新排序初始化可能会对我们有所帮助。

import datetime
import hashlib

class Block:
def __init__(
self,
previous_block_hash,
data,
timestamp,
sender,
):
self.previous_block_hash = previous_block_hash
self.data = data
self.timestamp = timestamp
#reordering self.hash and self.sender as self.get_sender() references to self.sender
self.sender = self.get_sender()
self.hash = self.get_hash()
@staticmethod
def create_genesis_block():
return Block('0', '0', datetime.datetime.now(), '')
def get_sender(self):
self.sender = input('Enter senders ID number: ')
return self.sender
def get_hash(self):
header_bin = str(self.previous_block_hash) + str(self.data) 
+ str(self.timestamp) + str(self.sender)
inner_hash = 
hashlib.sha256(header_bin.encode()).hexdigest().encode()
outer_hash = hashlib.sha256(inner_hash).hexdigest()
return outer_hash

希望这有帮助

最新更新