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

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

Python變量聲明

Python變量聲明

慕的地6264312 2019-08-12 10:47:21
Python變量聲明學習python,并有一些基本的疑慮。我看過變量聲明(路徑在這里)class writer:     path = ""有時,沒有明確的聲明,但初始化__init__。def __init__(self, name):     self.name = name我理解的目的__init__,但是建議在任何其他函數中聲明變量。2.如何創建變量來保存自定義類型?class writer:     path = "" # string value     customObj = ??
查看完整描述

3 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

沒有必要在Python中聲明新變量。如果我們在談論函數或模塊中的變量,則不需要聲明。只需為您需要的名稱指定一個值:mymagic = "Magic"。Python中的變量可以包含任何類型的值,但您不能限制它。

您的問題特別詢問了類,對象和實例變量。創建實例變量的慣用方法是在__init__方法中而不是其他地方 - 雖然您可以在其他方法中創建新的實例變量,或者甚至在不相關的代碼中,但這只是一個壞主意。它會使你的代碼難以推理或維護。

例如:

class Thing(object):

    def __init__(self, magic):
        self.magic = magic

簡單。現在這個類的實例有一個magic屬性:

thingo = Thing("More magic")# thingo.magic is now "More magic"

在類的名稱空間中創建變量本身會導致不同的行為。它在功能上有所不同,只有在您有特定原因時才應該這樣做。例如:

class Thing(object):

    magic = "Magic"

    def __init__(self):
        pass

現在嘗試:

thingo = Thing()Thing.magic = 1# thingo.magic is now 1

要么:

class Thing(object):

    magic = ["More", "magic"]

    def __init__(self):
        passthing1 = Thing()thing2 = Thing()thing1.magic.append("here")# thing1.magic AND thing2.magic is now ["More", "magic", "here"]

這是因為類本身的名稱空間與從其創建的對象的名稱空間不同。我會留給你研究一下。

帶回家的消息是,慣用的Python是(a)初始化__init__方法中的對象屬性,(b)根據需要記錄類的行為。你不需要為你所寫的所有東西都找到完整的Sphinx級文檔的麻煩,但至少有一些關于你或其他人可能需要提取它的細節的評論。


查看完整回答
反對 回復 2019-08-12
?
精慕HU

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

這可能晚了6年,但在Python 3.5及更高版本中,您聲明了一個這樣的變量類型:

variable_name: type_name

或這個:

variable_name # type: shinyType

所以在你的情況下(如果你CustomObject定義了一個類),你可以這樣做:

customObj: CustomObject


查看完整回答
反對 回復 2019-08-12
  • 3 回答
  • 0 關注
  • 577 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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