

「みんなの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]

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


CC BY-SA 4.0
2018-10-18T08:16:12.830
49412
2020-07-21T00:51:22.843
2018-10-20T15:55:13.893
3054
30534
question
python jupyter-notebook
コードをJupyter Notebookのファイルに保存してimportするとエラーになる


> これを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` というエラーが発生しています。


CC BY-SA 4.0
2018-10-18T10:36:55.787
49414
2018-10-18T10:36:55.787
806
49412
answer


### Jupyterでテキストファイルを作成する方法

Jupyter には
Notebook（`ipynb`形式）ではないテキストファイルを作成・編集する方法もあるようです。書籍はこれを前提としているかも知れないので、[既にある回答](https://ja.stackoverflow.com/a/49414/3054)
の補足とします。

新規にNotebookではないファイルを作成する際は、`Notebook:` ではなく `Other:` から `Text File` を選択します。

> ![新規ファイル作成メニュー](https://i.stack.imgur.com/fA9eQ.png)

上のようにテキストファイルを作成するか、既存のテキストファイルをクリックすると編集画面に移ります。Notebook
を開いた際とは画面構成が異なるので、区別できると思います。

> ![テキストファイル編集画面](https://i.stack.imgur.com/Hf9eU.png)

（操作方法やスクリーンショットはJupyter 4.4.0 のものです）


CC BY-SA 4.0
2018-10-18T11:40:01.940
49416
2018-10-18T11:40:01.940
3054
49412
answer