Python类在调用函数时没有属性

时间:2019-04-23 18:39:35

标签: python

我遇到这类问题attributeError: module 'ResponseLayer' has no attribute 'RS'。我是一个初学者,刚开始从头开始学习python。我在这里需要了解什么?我编码错了吗?

class ResponseLayer:

    def RS(self,_width, _height, _step, _filter):
        self.width = _width
        self.height = _height
        self.step = _step
        self.filterr = _filter

class FastHessian:

    import ResponseLayer

    def buildResponseMap():
        responseMap = []

        w = int(img.Width / init)
        h = int(img.Height / init)
        s = int(init)

        if (octaves >=1):
            responseMap.append(RS(w, h, s, 9))
            responseMap.append(RS(w, h, s, 15))
            responseMap.append(RS(w, h, s, 21))
            responseMap.append(RS(w, h, s, 27))

1 个答案:

答案 0 :(得分:0)

Ianny,

如果您显示的所有代码都保存在同一文件中,则不必导入ResponseLayer

我相信您正在将ResponseLayer的唯一实例添加到响应映射。

如果我是对的,那么您应该将RS类上的ResponseLayer方法更改为实例创建方法(Python中的init)。

因此您只需编写ResponseLayer(20, 30, 2, 4)即可创建示例响应层对象。

这是我的意思:


class ResponseLayer:

    def __init__(self, width, height, step, _filter):
        self.width = width
        self.height = height
        self.step = step
        self._filter = _filter

class FastHessian:

    def buildResponseMap():
        responseMap = []

        w = int(img.Width / init)
        h = int(img.Height / init)
        s = int(init)

        if (octaves >= 1):
            responseMap.append(ResponseLayer(w, h, s, 9))
            responseMap.append(ResponseLayer(w, h, s, 15))
            responseMap.append(ResponseLayer(w, h, s, 21))
            responseMap.append(ResponseLayer(w, h, s, 27))

我了解您是Python初学者。

欢迎来到Python的世界。

我喜欢帮助初学者提高自己的力量。就像提到的@chepner一样,您的代码对于Java来说也看起来像Java。我很想帮助您重写它,使其更具Python风格。随时在StackOverflow上与我聊天。