python
モジュール パッケージ サブパッケージ
パッケージやモジュールを使用する際には、 インポート処理が必要。
クラス
class クラス名 : クラス名の先頭は大文字
クラス変数とクラス内関数(=メソッド)は4文字下げ
コンストラクタ
オブジェクト生成時に呼び出される特殊なメソッド(コンストラクタ)
def __init__(self)
メソッド
# 通常メソッド
def normal_method(self, 引数2, 引数3, …): self.name = name return name
# クラスメソッド
def class_method(cls, 引数2, 引数3, …): cls.name = cname return cname
オブジェクト
オブジェクト生成 オブジェクト = クラス()
メソッドはの使用 オブジェクト.メソッド()
Pythonのメソッドは最低1つの引数selfを持つ。
ジェネシスブロックの作成
import hashlib import json from time import time from urllib.parse import urlparse from uuid import uuid4 import requests from flask import Flask, jsonify, request class Blockchain: def __init__(self): self.current_transactions = [] self.chain = [] self.nodes = set() # Create the genesis block(ジェネシスブロックの作成 オブジェクト) self.new_block(previous_hash='1', proof=100)ブロック作成メソッド
#新ブロック作成メソッド def new_block(self, proof, previous_hash): """ Create a new Block in the Blockchain :param proof: The proof given by the Proof of Work algorithm :param previous_hash: Hash of previous Block :return: New Block """ block = { 'index': len(self.chain) + 1, 'timestamp': time(), 'transactions': self.current_transactions, 'proof': proof, 'previous_hash': previous_hash or self.hash(self.chain[-1]), } # Reset the current list of transactions self.current_transactions = [] self.chain.append(block) return blocklen関数len 関数は引数に指定したオブジェクトの長さや要素の数を取得
len("Hello") 5 len(["red", "blue", "green"]) 3 len({"s":150, "m":160, "l":170, "xl":180}) 4ジェネシスブロック
[{'index': 0, 'timestamp': 1597794565.611749, 'transactions': [], 'nonce': '', 'previous_hash': '1'}]