Pythonは魔法のときにコンテナオブジェクトを作成しませんあなたはそれに属性を割り当てることを開始します。もしmatlabがこれを許せば、私はmatlabがひどく壊れたと考えます。このことを考えてみましょう:
person.name = "Mike"
persom.age = 25
person.sex = "Male"
は、今、私たちは
age
、
を持っていない二つの物体、person
とpersom
、およびperson
を持っており、これが起こったというヒントはありませんでした。後で
person.age
を印刷しようとすると、実際に間違った後に2ページが表示されることがあります。
クラス自体をコンテナまたは名前空間として使用できます。それをインスタンス化する必要はありません。属性の束がほしいと思えば、入力する必要はありません。アクセスしたり、これらのいずれかを変更するには
class sex:
male = "M"
female = "F"
class person:
name = "Mike"
age = 25
sex = sex.male
、あなたはなど、person.name
N.B.を使用することができますsex
のクラスを使用して、データ値の一貫性を提供しています(「M」か「男性」か「男性」かを覚えていない)し、タイプミスをキャッチしますsex.mlaeについては文字列 "mlae"については後で、それが "男性"に対して後でチェックされた場合は後者は失敗する)。
もちろん、このタイプのクラス定義では、name
,age
、またはsex
のスペルミスが発生する危険性があります。ですから、クラスをテンプレートとして使用してインスタンス化することができます。
今
class Person:
def __init__(self, name, age=None, sex=None):
self.name, self.age, self.sex = name, age, sex
あなたは:
person = Person("Mike", 25, sex.male)
またはあなたがすべてのそれらのパラメータが何であるかを文書化したい場合:
person = Person("Mike", age=25, sex=sex.male)
それは、そのオブジェクトで終わるためにほとんど不可能です属性名のスペルが間違っています。あなたがそれを混乱させると、Pythonは間違いを犯した時点でエラーメッセージを表示します。これがこのようにする理由の1つに過ぎません。
Matlabのアプローチはほとんど意味がありません。なぜあなたはPythonのようなことをしたいのですか? Pythonの言語規則に従ってPythonで何かをするのが間違っていますか?なぜ異なる言語のルールをPythonに課すのですか? –
こんにちはS.Lott、以下のkindallの回答に関する私のコメントを参照してください。 – mikeP
あなたは本当にPython辞書が必要です –