2016-12-30 34 views
-4

我開始在Python中學習class,並試圖讓我的頭在的attributes,methodsparameters的概念。Python - 類的屬性,方法和參數

我與3個例子的工作:


example 1

class Clock(object): 
     def __init__(self, time): 
     self.time = time 
     def print_time(self): 
     time = '6:30' 
     print self.time 

有:

clock = Clock('5:30') 
clock.print_time() 

它打印5:30


example 2

class Clock(object): 
    def __init__(self, time): 
    self.time = time 
    def print_time(self, time): 
    print time 

有:

clock = Clock('5:30') 
clock.print_time('10:30') 

它打印10:30


example 3

class Clock(object): 
     def __init__(self, time): 
     self.time = time 
     def print_time(self): 
     print self.time 

最後,用:

boston_clock = Clock('5:30') 
paris_clock = boston_clock 
paris_clock.time = '10:30' 
boston_clock.print_time() 

它打印10:30

可以請人解釋我是如何的屬性,方法和參數被綁定到對象這些例子?

+1

我投票結束這個問題作爲題外話,因爲這不是一個輔導服務。 – TigerhawkT3

+0

謝謝你的幫助 –

+2

你的問題相當模糊。屬性,方法和參數是非常普遍的概念。我認爲你需要縮小你需要了解的範圍。現在,你甚至不清楚你知道什麼屬性,方法和參數。這樣做可能是很好的做法:「我認爲blah是一個參數,並且被綁定到代碼行中的某個對象,是正確的嗎?」這樣人們可以看到你對這些概念的現有理解是什麼。 – BrenBarn

回答

-1

此鏈接here可以解釋更多關於類屬性/方法/參數。

但是,我明白這些概念有多複雜,所以我會回答你的問題(儘管將來會嘗試提出更具體的問題!)。

在示例之一:

init(初始化)和print_time都是類屬性。當您初始化clock變量並通過參數'5:30'時,它將訪問init函數並且擊中self.time = time一行代碼。由於使用點符號訪問時間,因此time是INSTANCE屬性(特定於個別對象)。

當您調用self.print_time()時,time存在特定於該函數調用的局部變量,因此實例屬性不會更改。這就是爲什麼當你打印self.time它仍然是5:30。

在例如兩個:

在這種情況下,initprint_time功能都是類屬性(類似於上面的例子)。 clock對象的初始化與上面的相同。但是,當它調用print_time時,time是參數'10:30',因此當我們只打印time(注意我們沒有使用任何點符號)時,它僅打印'10:30'的局部變量。

在例如三個:

initprint_time都是類屬性,與上述相同的兩個例子。初始化boston_clock對象時,它與示例1和2相似。然後,將名稱paris_clock分配給對象boston_block(請注意paris_clockboston_clock只是指向同一對象的名稱,比如我可以有兩個名稱)。因此,當我們執行代碼行paris_clock.time = '10:30'時,此單個對象的INSTANCE屬性將更改爲'10:30'。但是,由於boston_clock指向與paris_clock相同的對象,因此boston_clocktime屬性也是「10:30」。

-1

屬性是類或實例中的變量。在這種情況下,變量hello是類Hi的一個屬性。

class Hi: 
    hello = "Hello World!" 

方法是在類中的功能,所以對於這樣的事情,功能greet是類Hi的方法。

class Hi: 
    def greet(self): 
    pass 

參數是進入方法的輸入。所以字符串"Hello World!"是類Hi中方法say的參數。

class Hi: 
    def say(self, saying): 
    print(saying) 

Hi().say("Hello World!") 

軟件工程StackExchange網站上有關於OOPL的一個很好的問題。 Explaining OOP Concepts to a non technical person.

+1

_「可以請別人解釋這些示例中屬性,方法和參數如何綁定到對象?」 - 我真的不認爲你回答了這個問題。看起來更像是你在叢林中對我的毆打。沒有冒犯的意思。 –

+0

@leaf有道理,我只是試圖解釋每個標準程序如何工作。這篇文章末尾的問題可能會更好地解釋這些概念。 –

+0

是的,我可以看到你來自哪裏。然而,OP看起來很困惑,並且可以從一個很好的解釋中受益。唉,我找不到適合他的問題的答案。 mabye我會發布我自己的。 –