如何在python类中更改示例属性

rjee0c15  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(138)

我刚开始使用python类,对于如何正确地更改示例属性中的值,我有一些疑问:
我举了下面的例子:

import numpy as np

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

myClass的示例将具有两个属性:namevalues中的一个或多个。
创建myClass对象后

obj1 = myClass()

我想更改obj1的变量nameval
正确的做法是什么?
正在执行:

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

或者创建成员函数来定义:

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

或者我应该创建一个函数来分配数组中的“i”项

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

并在循环中将其用作:

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

还是一切都一样,我可以用任何我想用的方法?
此致

bmvo0sr5

bmvo0sr51#

最简单的方法是将__init__更改为需要两个参数:

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方法,因为你不应该访问类本身之外的示例变量。
因为你没有private示例变量,这只是一个协议,你不能直接访问变量。你也可以在你的示例变量前加一个下划线,以强调这些变量应该被视为private变量:

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

相关问题