[英]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
的實例將具有兩個屬性: name
和values
。
創建myClass
的 object 后
obj1 = myClass()
我想更改obj1
的變量name
和val
。
這樣做的正確方法是什么?
正在做:
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
的值,請使用getter和setter方法,因為您不應訪問 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.