1. ホーム
  2. python

[解決済み] Pythonで文字列変数を初期化する。""かNoneか?

2023-04-06 06:21:03

質問

例えば 文字列 インスタンス属性があるとします。 この属性は ""。 の値で初期化すべきか なし ? どちらでも良いのでしょうか?

def __init__(self, mystr="")
   self.mystr = mystr

または

def __init__(self, mystr=None)
   self.mystr = mystr

編集 : 私が思ったのは、もし私が を使えばいいんだ。 を初期値として使用すると、" を宣言します。 である変数を宣言します。 文字列 という型を指定します。そして、後で他の型を代入することができなくなります。そうでしょうか?

Edit : ここで重要なのは、私の提案は間違っていた、ということです。そして、変数に別の型を割り当てることは問題ではありません。私は S.Lott : " Pythonでは何も"宣言されないので、あなたはこのことについて正しい方法で考えていません。 "。

どのように解決するのか?

値を持たないことがプログラムの中で意味を持つ場合(例:オプションの値)、Noneを使うべきです。いずれにせよ、それが目的です。

もし値が__init__の呼び出し元によって提供されなければならないのであれば、初期化しないことをお勧めします。

""がデフォルト値として意味を持つのであれば、それを使う。

Pythonでは、型は使用法から推測されます。したがって、別の型の値を代入するだけで型を変更することができます。

>>> x = None
>>> print type(x)
<type 'NoneType'>
>>> x = "text"
>>> print type(x)
<type 'str'>
>>> x = 42
>>> print type(x)
<type 'int'>