簡體   English   中英

我最近開始自學python,我對“類”部分中的術語感到非常困惑

[英]I recently started to self learn python and I'm really confused about the terminology in the "classes" section

類(方法?)只是為了定制一個新類型嗎? 實例只是新定制類型的特定變量嗎? 真的對“屬性”感到困惑,因為這里這里有很多不同的意見。

class PartyAnimal:
   x = 0

   def party(self) :
     self.x = self.x + 1
     print("So far",self.x)

an = PartyAnimal()

順便說一句self.x = self.x + 1在這里如何工作? 感謝您的幫助,並原諒我的英語不好。

class (方法?)只是為了定制一個新類型嗎?

class是對象的框架。 對象是class的一個實例:

class PartyAnimal:
    ...

# `an` is an instance of PartyAnimal
an = PartyAnimal()

方法是class中的一個函數。 在您的示例中, def party(self)PartyAnimal的一種方法


真的對“屬性”感到困惑

class的屬性是class.something

您的PartyAnimal class的屬性是self.x部分,其中xPartyAnimal的一個屬性。 您可以通過以下方式獲取每個實例的x值:

class PartyAnimal:
   x = 0

   def party(self) :
     self.x = self.x + 1
     print("So far",self.x)
>>> an = PartyAnimal()
>>> an.x
0
# Then run the method
>>> an.party()
'So far 1'
>>> an.x
1

文檔 - https://docs.python.org/3/glossary.html#term-attribute


順便說一句self.x = self.x + 1在這里如何工作?

您將1添加到屬性x 如果您不使用類,則與x += 1相同


我推薦閱讀w3 關於 classes 的文章 真的很棒

用非常簡單的話來說,在類中定義的任何變量都稱為屬性。 類的實例是該特定類的副本。

當您實例化類PartyAnimal()時,會創建它的副本。 你將它分配給一個相同類型an變量。

an = PartyAnimal()

現在,讓我們將an稱為PartyAnimal()類的實例。 an包含一個屬性x ,該屬性最初設置為值0 可以使用. 操作員。

print(an.x) # output: 0

默認情況下,python 中類的屬性是public 這意味着它們可以在課堂之外訪問。 如果要將x的值增加1 ,可以通過以下方式進行:

an.x = an.x + 1
print(an.x) # output: 1

現在,討論方法party() ,它接受參數self self表示類的實例。 party()中, x的值遞增。 要知道我們指的是該實例的變量x而不是任何其他x (有時名稱為x的變量被傳遞給函數),我們使用self

請參閱以了解有關self的更多信息。

您發布的第一個鏈接解釋了您的大部分問題......

解釋什么是方法——它們是對象和類的函數:

一個對象可以包含許多函數(我們稱之為方法

您發布的第二個鏈接證實了這一點:

方法:在類體內定義的函數 如果作為該類實例的屬性調用,該方法將獲取實例對象作為其第一個參數(通常稱為 self)。 請參閱函數和嵌套范圍。


解釋什么是類...

class關鍵字定義了一個模板,該模板指示每個PartyAnimal類型的對象中將包含哪些數據和代碼。 該類就像一個餅干切割機,使用該類創建的對象就是餅干。

counts = dict()在這里,我們指示 Python 使用dict模板(已經存在於 Python 中)構造一個對象,返回字典的實例,並將其分配給變量 counts。

它將dictPartyAnimal作為兩個模板進行比較,這兩種類型的對象。


解釋什么是屬性——它們是對象和類的數據:

我們稱作為對象屬性一部分的數據項。

屬性:與對象關聯的,使用點分表達式按名稱引用。


解釋對象和實例是可互換的並且它們被分配給變量......

an = PartyAnimal()這是我們指示 Python 構造(即創建) PartyAnimal類的對象或實例的地方。

Python 使用正確的數據和方法構造對象並返回該對象,然后將其分配給變量an

PartyAnimal類用於構造對象時,變量an用於指向該對象


解釋你關於self.x = self.x+1的問題......

當調用party方法時,第一個參數(我們按照約定調用selfPartyAnimal調用party的 PartyAnimal 對象的特定實例。 party方法中,我們看到以下行:

self.x = self.x + 1

這種使用點運算符的語法是self中的x 每次調用party()時,內部x值都會增加 1 並打印出該值。


我在您發布的兩個鏈接之間找不到有沖突的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM