26

djangoプロジェクトを作成しました。これには、 「type」属性を持つモデルクラスが含まれています。「タイプ」は、エントリの種類を定義するため、そのフィールドを説明するのに最も適切な用語だと思います。

class Vehicle(models.Model):
    TYPE = (
        (u'car', u'Car'),
        (u'motorcycle', u'Motorcycle'),
        (u'airplane', u'Airplane'),
    )

    type = models.CharField(max_length=100, choices=TYPE)

「種類」や「カテゴリ」は「タイプ」ほど一般的ではないので、あまり好きではありません。

問題

Assignment to reserved built-in symbol: type
  1. これは警告ですが、それは問題ですか?
  2. はいの場合、どのような選択肢がありますか?
  3. 「タイプ」という用語に代わる良い方法はありますか?
4

3 に答える 3

19

私は他の答えに同意しません。これを変更する必要はありません。

私の意見では、インスタンスを介さない限り属性にアクセスすることはないため、混乱のリスクはほとんどありません。my_vehicle.type(例)と混同するのは簡単ではありませんtype(my_vehicle)

于 2012-05-09T12:31:21.937 に答える
18
  1. Pythonの組み込みの1つをシャドウする変数名を付けることは常に悪い考え です。タイプが特定の何かを意味することを期待するあなたのコードを読んでいる人々を混乱させるでしょう。他のユーザーにとって読みやすさほど重要ではありませんが、構文の強調表示を破棄することもできます。
  2. 変数の名前を変更します。(本当にそれが最善の方法です-そのままにしておくこともできますが、簡単なうちに今すぐ名前を変更してください)
  3. おそらくまたは。、多くの潜在的なオプションがあります。あなたが好きではないと言ったのは知っていますが、それについて一般的ではないものがわかりませんか?classificationcategorycategory

特定のアプリケーションにとってはやり過ぎかもしれませんが(詳細を知る必要があります)、djangoはモデルの継承をサポートしています。

于 2012-05-09T12:20:55.880 に答える
1

まあ、警告やエラー、私はいつもあなたのような状況を危険にさらすことを避けたいと思います:)私の意見では、あなたができるより良いことは、意味やまとまりを失うことなく変数名を変更することです。特定のクラスでのみ使用される場合は、短縮して車両タイプを意味する「v_type」と呼ぶことができます。そのクラスを拡張する場合は、別の車両タイプで拡張するため、この場合は「v_type」が適合します。

于 2012-05-09T12:22:05.837 に答える