python - 如何定义类对象的新属性

标签 python oop

假设我想创建一个类,应用一个方法并为结果对象设置一个属性。

arr = np.array([1,2,3])

class Transformer:

    def __init__(self, array):
        self.array = array

    def operator(self):
        operator = (self.array * 2) + 60
        return operator

    @staticmethod
    def meta(array):
        meta = (max(array) + 17)
        return meta

    def to_operator(self):
        op = self.operator()
        meta = self.meta(op)
        setattr(op, 'meta', meta)# or op.meta = meta
        return op


t = Transformer(np.array([1, 2, 3]))
t1 = t.to_operator()
print(t1.meta())

这里我收到以下错误:

AttributeError: 'numpy.ndarray' object has no attribute 'meta'

预期结果:

 >>> 83

最佳答案

运行代码时,我收到错误,并将有问题的行显示为 setattr(op, 'meta', meta):

Traceback (most recent call last):
  File "/home/ralf/PycharmProjects/scratch_pad/run.py", line 44, in <module>
    t1 = t.to_operator()
  File "/home/ralf/PycharmProjects/scratch_pad/run.py", line 29, in to_operator
    setattr(op, 'meta', meta)
AttributeError: 'numpy.ndarray' object has no attribute 'meta'

阅读这些相关问题的原因:

关于python - 如何定义类对象的新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57076340/

相关文章:

python - WebSocket 聊天异步示例崩溃

python - 使用python将嵌套的json拆分为两个/多个文件

python - 磁盘上有 70 MB 但内存中有 500 MB 的列表

python - 如果存在具有相同名称的位置参数,为什么 kwargs 中的键被删除?

java - 具有多个接口(interface)的类

python - 类定义之后的任何内容都会抛出错误

python - 从筛选检测器中提取关键点

c# - 这是将数据传递给方法的更好方法

c++ - 继承和嵌套名称的陷阱

apache-flex - Flex/ActionScript3 : keyword "with" hides misspelled property names