簡體   English   中英

在函數內部分配的類實例變量

[英]Class instance variable assigned inside function

是否可以將類實例變量設置為等於在函數內部創建的另一個類的類實例變量? 下面的代碼似乎在調用func()后工作( a.var = [5, []] ),但我想確保我沒有遺漏任何東西:

def func():
  class C:
    def __init__(self):
      self.var = [[] for _ in np.arange(2)]
  c = C()
  c.var[0] = 5
  a.var = c.var

class A:
  def __init__(self):
    self.id = 0
    self.var = [[] for _ in np.arange(2)]

if __name__ == "__main__":
  a = A()
  func()

是的,您只是在分配對象。 現在,你應該非常小心你寫這篇文章的方式。 依賴您設定的范圍是一個壞主意——它會起作用,但我很容易看到有人忘記了“a”並且它永遠不會傳遞給 func()。 在我看來,更好的 func 實現:

def func(a, val=5):
  class C:
    def __init__(self):
      self.var = [[] for _ in range(2)]
  c = C()
  c.var[0] = val
  a.var = c.var

class A:
  def __init__(self):
    self.id = 0
    self.var = [[] for _ in range(2)]

if __name__ == "__main__":
  a = A()
  func(a)
  aa = A()
  func(aa, val=10)

因為列表可以包含任何對象,所以你可以做一些更奇怪的事情,比如。

aa.var[1] = a

暫無
暫無

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

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