回答編集履歴
2
追加質問への回答
    
        answer	
    CHANGED
    
    | 
         @@ -22,4 +22,44 @@ 
     | 
|
| 
       22 
22 
     | 
    
         
             
            <class 'type'>
         
     | 
| 
       23 
23 
     | 
    
         
             
            >>> print(str.__class__)
         
     | 
| 
       24 
24 
     | 
    
         
             
            <class 'type'>
         
     | 
| 
      
 25 
     | 
    
         
            +
            ```
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            追加質問への回答です。
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            - "typeはクラスのクラス" とはどういうことでしょうか??
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Pythonではすべてはオブジェクトです。
         
     | 
| 
      
 32 
     | 
    
         
            +
            すべてのオブジェクトはクラスを持ちます。
         
     | 
| 
      
 33 
     | 
    
         
            +
            1.0という浮動小数のクラスはfloatであり、それを調べるためには、type(float)を使うか、1.0.__class__を使います。
         
     | 
| 
      
 34 
     | 
    
         
            +
            type(float)はtypeというクラスです。
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            詳しくは公式ドキュメントの[class type](https://docs.python.org/ja/3/library/functions.html?highlight=type#type)を読んでください。
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            - SignigKey()とSigningKeyの場合,前者がオブジェクト(インスタンス)で,SigningKeyがクラスということでしょうか??
         
     | 
| 
      
 39 
     | 
    
         
            +
            はい。
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            - type(SigningKey) とやるとtype型が出るということでしょうか,
         
     | 
| 
      
 42 
     | 
    
         
            +
            はい。
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            -  "SigningKey().メソッド名"と書いていないのにもかかわらず,なぜ上のような使い方ができるのでしょうか??
         
     | 
| 
      
 45 
     | 
    
         
            +
            generateはSigningKeyのクラスメソッドだからです。
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            クラスメソッドについては公式ドキュメントの[@classmethod](https://docs.python.org/ja/3/library/functions.html?highlight=classmethod#classmethod)に書いてありますが、あまりわかりやすくないですね。
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            以下の例で理解してください。
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            ```python
         
     | 
| 
      
 52 
     | 
    
         
            +
            >>> class C:
         
     | 
| 
      
 53 
     | 
    
         
            +
            ...     @classmethod
         
     | 
| 
      
 54 
     | 
    
         
            +
            ...     def hello(cls, name):
         
     | 
| 
      
 55 
     | 
    
         
            +
            ...         print(f'from {cls}: hello {name}')
         
     | 
| 
      
 56 
     | 
    
         
            +
            ...
         
     | 
| 
      
 57 
     | 
    
         
            +
            >>> C.hello('John')
         
     | 
| 
      
 58 
     | 
    
         
            +
            from <class '__main__.C'>: hello John
         
     | 
| 
      
 59 
     | 
    
         
            +
            >>> print(C.hello)
         
     | 
| 
      
 60 
     | 
    
         
            +
            <bound method C.hello of <class '__main__.C'>>
         
     | 
| 
      
 61 
     | 
    
         
            +
            >>> print(SigningKey.generate)
         
     | 
| 
      
 62 
     | 
    
         
            +
            <bound method SigningKey.generate of <class 'ecdsa.keys.SigningKey'>>
         
     | 
| 
      
 63 
     | 
    
         
            +
            >>> type(C.hello) is type(SigningKey.generate)
         
     | 
| 
      
 64 
     | 
    
         
            +
            True
         
     | 
| 
       25 
65 
     | 
    
         
             
            ```
         
     | 
1
例を追加
    
        answer	
    CHANGED
    
    | 
         @@ -1,2 +1,25 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            直接には、SigningKeyのクラスがtypeであるという意味です。
         
     | 
| 
       2 
     | 
    
         
            -
            typeはクラスのクラスなので、SigningKeyがクラスであるという意味になります。
         
     | 
| 
      
 2 
     | 
    
         
            +
            typeはクラスのクラスなので、SigningKeyがクラスであるという意味になります。
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            以下を見て理解して下さい。
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            type(x)はx.__class__と同じになります。
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ```python
         
     | 
| 
      
 9 
     | 
    
         
            +
            >>> print(type(1.0))
         
     | 
| 
      
 10 
     | 
    
         
            +
            <class 'float'>
         
     | 
| 
      
 11 
     | 
    
         
            +
            >>> print(1.0.__class__)
         
     | 
| 
      
 12 
     | 
    
         
            +
            <class 'float'>
         
     | 
| 
      
 13 
     | 
    
         
            +
            >>> print(type('a'))
         
     | 
| 
      
 14 
     | 
    
         
            +
            <class 'str'>
         
     | 
| 
      
 15 
     | 
    
         
            +
            >>> print('a'.__class__)
         
     | 
| 
      
 16 
     | 
    
         
            +
            <class 'str'>
         
     | 
| 
      
 17 
     | 
    
         
            +
            >>> print(type(float))
         
     | 
| 
      
 18 
     | 
    
         
            +
            <class 'type'>
         
     | 
| 
      
 19 
     | 
    
         
            +
            >>> print(float.__class__)
         
     | 
| 
      
 20 
     | 
    
         
            +
            <class 'type'>
         
     | 
| 
      
 21 
     | 
    
         
            +
            >>> print(type(str))
         
     | 
| 
      
 22 
     | 
    
         
            +
            <class 'type'>
         
     | 
| 
      
 23 
     | 
    
         
            +
            >>> print(str.__class__)
         
     | 
| 
      
 24 
     | 
    
         
            +
            <class 'type'>
         
     | 
| 
      
 25 
     | 
    
         
            +
            ```
         
     |