[英]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.