Python2.7 getter和setter不处理来自obj的继承

2024-09-30 01:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

class EditImage(object):

    def __init__(self):
        self._image = None
        self._imageName = ''

    @property
    def image(self):
        return self._image

    @property
    def imageName(self):
        return self._imageName

    @image.setter
    def image(self, filePath):
        self._image = Image.open(filePath)

    @imageName.setter
    def imageName(self,image):
        self._imageName = self.image.fileName

那么

^{pr2}$

我得到了一个错误:

    ei.image(name)
TypeError: 'NoneType' object is not callable

通过调试,我看到它转到getter而不是setter,它调用ei.image() 该类继承自object,但它仍然不工作。 我错过了什么? 谢谢您!在


Tags: imageselfnonereturnobjectinitdefproperty
3条回答
 ei.image

用于获取image的值

因为它的属性和getter方法是覆盖。并且在

是的

^{pr2}$

用于设置image的值。在

因为这些现在是属性,你不能对它进行function call

如果要设置属性,则必须使用赋值而不是括号:

ei.image = name

您得到了一个TypeError: NoneType,因为ei.image返回您的ei对象的image属性值,该值在当前时间段内为空。在

我刚注意到自己。我希望它能以java的方式工作,比如

ei.setImage(name)

Python方式:

^{pr2}$

结果:

setter
getter
getter
    obj.x(2)
TypeError: 'int' object is not callable

Java方式:

public class ClassEnc {

private int x;

public int getX() {
    System.out.println("getter");
    System.out.println("x = " + x);
    return x;
}

public void setX(int x) {
    System.out.println("setter");
    this.x = x;
    System.out.println("x = " + x);
}

}

public class maincl {

public static void main(String[] args) {
    ClassEnc ce = new ClassEnc();
    ce.getX();
    ce.setX(34);
}

}

结果:

getter
x = 0
setter
x = 34

相关问题 更多 >

    热门问题