首页 > 解决方案 > 如何使用具有定义大小的对象创建类

问题描述

我需要创建在显示器上产生定义方块的对象。我想如果我为每个对象创建一个单独的类,我将能够创建一个已经具有正确大小的类实例,并使用str来显示什么大小和相关的参数名称。我知道它不能按照我的方式工作,因为我无法按照我的方式传递参数 args,我什至没有得到合理的错误返回,但它在我将整数作为 args 传递的那一行失败了在“objOne”的方法中。

代码:

class Wide():

    def __init__(self, DW, XfromLeftEdge, YfromTopEdge, Width, Height):
        self.XfromLeftEdge = XfromLeftEdge
        self.YfromTopEdge = YfromTopEdge
        self.Width = Width
        self.Height = Height

    def objOne(self, DW, 141.0, 300.0, 1551.0, 800.0 ): #XfromLeftEdge, YfromTopEdge, Width, Height
        return DW.SetRoi(141.0,300.0,1551.0,800.0)

    def __repr__(self):
        return '{}, {}, {}, {}'.format(
            self.XfromLeftEdge = XfromLeftEdge,
            self.YfromTopEdge = YfromTopEdge,
            self.Width = Width,
            self.Height = Height)

    def __str__(self):
        return 'instance object of box, XfromLeftEdge:{},YfromTopEdge: {}, Width:{}, Height:{}'.format(
            self.XfromLeftEdge = XfromLeftEdge,
            self.YfromTopEdge = YfromTopEdge,
            self.Width = Width,
            self.Height = Height)


class Narrow():

    def __init__(self, DW, XfromLeftEdge, YfromTopEdge, Width, Height):
        self.XfromLeftEdge = XfromLeftEdge
        self.YfromTopEdge = YfromTopEdge
        self.Width = Width
        self.Height = Height


    def objOne(self, DW, 141.0, 300.0, 141.0, 800.0 ): #XfromLeftEdge, YfromTopEdge, Width, Height
        return DW.SetRoi(141.0,300.0,141.0,800.0)


    def __repr__(self):
        return '{}, {}, {}, {}'.format(
            self.XfromLeftEdge = XfromLeftEdge,
            self.YfromTopEdge = YfromTopEdge,
            self.Width = Width,
            self.Height = Height)


    def __str__(self):
        return 'instance object of box, XfromLeftEdge:{},YfromTopEdge: {}, Width:{}, Height:{}'.format(
            self.XfromLeftEdge = XfromLeftEdge,
            self.YfromTopEdge = YfromTopEdge,
            self.Width = Width,
            self.Height = Height)


a = Wide()
print(a)

输出

SyntaxError: invalid syntax
(base) user % /usr/local/bin/python3 "/Users/.../Desktop/.../play_a.py"
  File "/Users/.../Desktop/.../play_a.py", line 9
    def objOne(self, DropWatch, 141, 300, 1551, 800 ): #XfromLeftEdge, YfromTopEdge, Width, Height
                                ^

所需的输出 我希望能够为 Wide 创建一个类,另一个为窄类,当我实例化时,我可以获得预定义的大小对象,当我打印它们时,我可以看到参数名称。

标签: pythonclassoopmethods

解决方案


当你声明一个 Python 函数时,它的参数需要写成变量,而不是值。如果您想拥有预定义的值,您必须执行以下操作:

class Wide():
    def __init__(self, XfromLeftEdge, YfromTopEdge, Width, Height):
        # Your code

    def objOne(self, DropWatch, x = 141.0, y = 300.0, w = 1551.0, h = 800.0 ): #XfromLeftEdge, YfromTopEdge, Width, Height
        return DropWatch.SetRoi(x,y,w,h)

推荐阅读