コードをJupyter Notebookのファイルに保存してimportするとエラーになる


「みんなのPython」を参考にPythonの勉強をしているのですが、下記のコードを打ち込んでも、参考書に書いてある通りになりません。どこが間違っているでしょうか。  
（juypter notebookを使って行っています）

[code]

    #!/usr/bin/env python 
    
    class StrDict(dict):
        def __init__(self):
            pass
        def __setitem__(self,key,value):
            if not isinstsnce(key,str):
                raise ValueError("Key must be str or unicode.")
            dict.__setitem__(self,key.value)
    
[/code]

これをstrdict.pyとjupyter notebookのファイルに保存して、

[code]

    from strdict import StrDict
    
[/code]

と次のセルで打ち込んだのですが、

[code]

    NameError                                 Traceback (most recent call last)
    <ipython-input-1-d320d56b1f78> in <module>()
    ----> 1 from strdict import StrDict
    
    ~\strdict.py in <module>()
          3   {
          4    "cell_type": "code",
    ----> 5    "execution_count": null,
          6    "metadata": {},
          7    "outputs": [],
    
    NameError: name 'null' is not defined
    
[/code]

となりました。どうすればよいのでしょう？？




> これをstrdict.pyとjupyter notebookのファイルに保存して、

ここが違っています。  
Jupyter Notebook上で作れるのは、ipynb形式のファイルです。  
strdict.py を作るにはJupyter Notebook以外のテキストエディタ等を使って作ってみて下さい。

* * *

もうすこし詳しく書くと、Jupyter Notebookの保存形式 ipynb
の中身はjsonフォーマットです。これをPythonのimport文で読み込もうとすると、PythonがPythonの文法としてjsonフォーマットを解釈しようとします。Pythonの文法や組み込み変数に
`null` は存在しないので、 `NameError: name 'null' is not defined` というエラーが発生しています。

