日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python cls和self_python中cls与self与类调用

發布時間:2023/12/16 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python cls和self_python中cls与self与类调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我是Python的初學者,使用Lutz的書來理解classmethod、staticmethod和{}。此代碼的目標是通過計算創建的實例數來了解cls、self和直接類調用(Spam1.numInstances)之間的區別。在

這是一個從書中衍生出來的例子。我不確定為什么父類(Spam1)屬性(numInstances)在通過Sub1和Other1調用時不遞增。在

我的代碼是:class Spam1:

numInstances = 0

def count(cls):

cls.numInstances += 1

print("In count -> number of instances: cls, Spam", cls.numInstances, Spam1.numInstances)

def __init__(self):

print("-----")

print("In init, before -> number of instances: self, Spam",self.numInstances,Spam1.numInstances )

self.count()

print("In init, after -> number of instances: self, Spam",self.numInstances,Spam1.numInstances )

print("-----")

count=classmethod(count)

class Sub1(Spam1):

numInstances = 0

class Other1(Spam1):

pass

a=Spam1() #Output after increment: 1,1,1 (self, cls, Spam1)

b=Spam1() #Output after increment: 2,2,2 (self, cls, Spam1)

c=Spam1() #Output after increment: 3,3,3 (self, cls, Spam1)

d=Sub1() #Output after increment: 1,1,3 (self, cls, Spam1)

e=Sub1() #Output after increment: 2,2,3 (self, cls, Spam1)

f=Other1() #Output after increment: 4,4,3 (self, cls, Spam1)

我花了一天時間來調試這段代碼,但我不明白cls.numInstances是如何工作的,因為PyCharm在調試模式下會對cls.numInstances顯示“no reference”。由于沮喪,我讀了一些這樣的帖子:What does cls() function do inside a class method?,What is the 'cls' variable used for in Python classes?,和{a3},但我不明白到底發生了什么。在

具體來說,我的問題是:

a)為什么在創建d、e和{}時,Spam1.numInstances沒有增加?

我想回答這個問題:

我的理解是cls用于訪問類屬性。對于d和e,使用self.numInstances訪問實例屬性,因為Sub1將Spam1繼承的屬性numInstances的值歸零。cls訪問Sub1的class屬性,這與Sub1類的屬性相同。因此,我們在輸出中看到的self和{}值分別是Sub1實例和類。我的理解正確嗎?

a.ii)f從Spam1繼承{}。因此,self.numInstances和{}取Spam1中的值。它們的值是遞增的,但不是Spam1,因為cls引用Other1,因為{}引用{},這是{}的對象。因此,Spam1的numInstances永遠不會被觸摸。

b)我對self.numInstances、cls.numInstances和{}之間的差異的理解正確嗎?如果沒有,有人能解釋一下嗎?

我認為我的問題很基本。我希望有人能幫我。我迷路了。在

總結

以上是生活随笔為你收集整理的python cls和self_python中cls与self与类调用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。