簡體   English   中英

如何更改實例屬性 python class

[英]How to change instance attributes in python class

我從 python 類開始,我對如何正確更改實例屬性中的值有一些疑問:

我有以下示例:

import numpy as np

class myClass:
    def __init__(self):
        self.name = "none"
        self.val = np.array([])

myClass的實例將具有兩個屬性: namevalues

創建myClass的 object 后

obj1 = myClass()

我想更改obj1的變量nameval

這樣做的正確方法是什么?

正在做:

obj1.name="name1"
obj1.val = np.zeros(3)

或者創建成員 function 來定義它:

def setName(self, name):
    self.name = name

def setVal(self, arr):
    self.val = arr

obj1.setName("name2")
obj1.setName(np.zeros(3))

如果我想遍歷val arr 我可以:

for i in range(3):
    obj1.val[i] = i

或者我應該創建一個 function 來分配數組中的條目“i”

def setValI(self, i, val):
    self.val[i] = val

並在循環中使用它作為:

for i in range(3):
    obj1.setValI(i, i)

還是完全一樣,我可以使用任何我想要的方法?

親切的問候

最簡單的方法是將您的__init__更改為需要兩個 arguments:

import numpy as np

class myClass:
    def __init__(self, name, val):
        self.name = name
        self.val = val

# Create an instance of myClass
obj1 = myClass("name1", np.zeros(3))

如果您想更改name和/或val的值,請使用gettersetter方法,因為您不應訪問 class 本身之外的實例變量。

由於您沒有private實例變量,這只是一個協議,您不直接訪問變量。 您還可以提前 go 並在您的實例變量前添加一個下划線,以突出顯示這些應被視為私有變量:

class MyClass:
   def __init__(self, name, val):
      # Underscore to signal "private" variable
      self._name = name
      self._val = val

暫無
暫無

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

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