2017-01-26 27 views
-1

由於類是存儲數據和方法的抽象概念。我想知道我們是否可以使用它來減少在本地命名空間中定義的變量數量。通過在python中使用類來減少名稱空間

我的問題是: 當你有多個變量,例如10與一個主題相關。 例如一個叫傑克的人的細節,並且你有關於這個人的名字,年齡,職業等等的描述。

創建一個類是個好主意嗎?

class Jack: pass 

jack = Jack() 

jack.age = 30 

jack.occupation = work 

,並可能具有Person類類Jack繼承。即class Jack(Person): pass

這將有助於減少佔用命名空間使用量的變量數量。因爲你不必寫: jack_age等等。

還是我錯過了觀點?

+1

去「可能有一流的傑克類Person繼承」號只是有一個名稱實例屬性的'Person'類。 – DeepSpace

+0

這裏有助於思考名稱「class」。它旨在表示一類對象,具有類似屬性的組可以用相同的方式表示。因爲你的例子中可能只有一個Jack,所以你不需要有一個'Jack'類,只是'Person''的一個實例jack = Person(30,'Programmer')' –

+0

Jack看起來像是數據,你不應該指望每次更改數據都需要更改你的代碼。也就是說,傑克有一個生日,改變職業,名字,性別...... – Sayse

回答

0

對於那種變量管理來說,類是一個很好的選擇,但範圍要比你定義的範圍稍寬;你不應該爲Jake創建一個類,因爲JakePerson類型的一個對象,它不是一個類型本身。

這就是爲什麼你應該創建一個類PersonPerson的一個實例,調用Jake,而不是Jake的實例; Jake只是一個人,一個人。他不是描述Jack的一般類型。

我會

class Occupation: 
    def __init__ (self, name): 
     self.name = name 

class Person: 
    def __init__ (self, name, age, occupation): 
     self.name = name 
     self.age = age 
     self.occupation = occupation 

work = Occupation('fireman') 
jack = Person('Jack', 30, work) 

print('{} is {} years old and works as a {}'.format(
    jack.name, jack.age, jack.occupation.name)) 
+0

我認爲這是一個很好的方法,你認爲'class Occupation'本身是沒有必要的,除非你想在裏面定義更多的變量。 – SkinnyTok

+0

好吧,它取決於你的意見。當你在現實生活中進行描述時,OOP是最好的。職業是一種普通的類型,你可以擴展到包括工資,地址,電話等等,因此它可以定義爲類;但是對於這個例子,你可以把它留下並使用'Person'('Jack',30,'fireman')' – Uriel

相關問題