2017-03-29 107 views
0

我在學習Python,最近開始使用OOP部分。 我知道有不同的方法來創建對象,但我不知道我應該瞄準的方式。以Python方式創建對象

使用參數或不帶參數創建對象? 然後我明白改變屬性的最好方法是使用方法調用。

代碼:

class Human(object): 
    def __init__(self): 
     self.name = '' 
     self.age = 0 

    def set_name(self, name): 
     self.name = name 

    def set_age(self, age): 
     self.age = age 


class Humans(object): 
    def __init__(self, name, age): 
     self.name = name 
     self.age = age 

    def set_names(self, name): 
     self.name = name 

    def set_ages(self, age): 
     self.age = age 

# Create object without arguments 
boy = Human() 
boy.set_name('Peter') 
boy.set_age(30) 

# Or create object with arguments 
girl = Humans('Sandra', 40) 
+2

你從學習的來源似乎對Java已經創建並粗略地適用於Python的只有語法的變化。它教給你的做法,比如setter的一切,都不適合Python。 – user2357112

+2

另外,你在名字中使用複數是沒有意義的。 – user2357112

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。 特別是,這個問題相當寬泛,容易發表意見。 「最佳實踐」在這裏並沒有明確的定義,並且在公司,項目和程序員中經常有所不同。例如,因爲Python實際上並沒有「私有」屬性,所以不能強制執行get/set接口 - 並且我的很多Python朋友都認爲它是膨脹的。 – Prune

回答

3

一個目的應該是一個可用狀態創建之後。也就是說,一個沒有名字,沒有年齡的人是沒有用的。所以第二個實施是首選。另一件事是,你不需要制定者在python,從而降低了類

class Humans(object): 
    def __init__(self, name, age): 
     self.name = name 
     self.age = age