亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類中的變量需要幫助

類中的變量需要幫助

料青山看我應如是 2023-07-27 16:32:27
我在處理類中的變量時遇到了一些問題。假設我有這門課:some_number = 200class Numbers:    def __init__(self):        self.number = some_number    def edit(self):        self.number = self.number - 50    def printNumber(self):        print(self.number)如果我在 shell 中運行:number = Numbers()number.edit()number.printNumber()這會打印數字 150 但這:print(some_number)打印數字 200。如何在類中更改變量 some_number,然后打印它返回編輯后的值?
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

該變量some_number位于類之外,因此不會改變。最簡單的方法是避免類并修改變量some_number。另一種選擇是some_number完全放棄并執行以下操作:


class Numbers:

    def __init__(self, number):

        self.number = number

    def edit(self):

        self.number = self.number - 50

    def printNumber(self):

        print(self.number)

那會被稱為這樣:


number = Numbers(150)

number.edit()

number.printNumber()

編輯該變量的方法有很多,但這是兩種可能的方法。


需要注意的是,全局變量可能會很棘手,但在全局范圍內聲明它也可以。


查看完整回答
反對 回復 2023-07-27
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

您將該變量聲明some_number為全局變量。將屬性添加.number到Numbers類的全部目的是使其特定于類的每個實例。


你可以改變some_number作為副作用,但你為什么要這樣做呢?


如果你有充分的理由,你會這樣做:


some_number = 200



class Numbers:

    def __init__(self):

        self.number = some_number

    def edit(self):

        global some_number

        self.number = self.number - 50

        some_number = self.number

    def printNumber(self):

        print(self.number)



n = Numbers()

n.edit()

n.printNumber()

print(some_number)

但更有可能的是,你想要這樣的東西:


some_number = 200



class Number:

    def __init__(self, number):

        self.number = number


    def edit(self, change):

        self.number = self.number + change


    def __str__(self):

        return str(self.number)



n = Number(some_number)

n.edit(-50)

print(n)

print(some_number)

將內容保留在全局變量中通常是一個非常糟糕的主意,除非有充分的理由讓一個值可供所有程序使用,并且該值的更改會影響整個程序。即使在這些情況下,通常最好顯式傳遞該值,而不是僅僅引用它,并賭它具有正確的值。


對于類,如果確實有充分的理由,則應該考慮使用類屬性而不是全局變量,這將使該類的所有實例的一個值保持相同,但至少沒有全局變量影響。


查看完整回答
反對 回復 2023-07-27
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

您可以通過以下方式訪問和更改some_number范圍global


class Numbers:

    def edit(self):

        global some_number

        some_number = some_number - 50


    def printNumber(self):

        print(some_number)

不過,一般來說,需要修改全局變量通常都指向設計問題......


查看完整回答
反對 回復 2023-07-27
  • 3 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號