Python會不會神奇地創建一個容器對象時你開始分配屬性,如果matlab允許這樣做,我會認爲matlab嚴重損壞。試想一下:
person.name = "Mike"
persom.age = 25
person.sex = "Male"
現在我們有兩個對象,person
和persom
,並person
沒有age
,並沒有暗示這件事發生。後來你試着打印person.age
,然後,人們會希望,matlab然後抱怨...實際的錯誤後兩頁。
一個類本身可以用作容器或名稱空間。沒有必要實例化它,如果你只是想要一些屬性,它會爲你節省一些輸入。
class sex:
male = "M"
female = "F"
class person:
name = "Mike"
age = 25
sex = sex.male
訪問或修改任何這些,你可以使用person.name
等
注:我使用了一個類sex
以說明這樣做的好處之一:它提供了數據值的一致性(不記得您是使用「M」還是「Male」或「male」)並捕獲拼寫錯誤(即Python會抱怨關於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會在你犯錯的時候給你一個錯誤信息。這只是這樣做的一個原因。
Matlab的方法沒有什麼意義。你爲什麼想在Python中做這樣的事情?遵循Python語言規則在Python中執行操作有什麼問題?爲什麼試圖在Python上強加不同的語言規則? –
嗨S.Lott,請參閱我對kindall的迴應以下的評論。 – mikeP
你真的想要一個Python字典 –