繁体   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