Как создавать классы с объектами определенных размеров - PullRequest
0 голосов
/ 17 июня 2020

Мне нужно создать объекты, которые создают определенные квадраты на дисплее. Я подумал, что если я сделаю отдельный класс для каждого объекта, я смогу создать экземпляр класса, который уже будет иметь правильный размер, и использовать str , чтобы показать, какие размеры и соответствующие имена параметров. Я знаю, что это не работает так, как я это делаю, поскольку я не могу передать аргументы параметра так, как я это делаю, я даже не получаю разумного возврата ошибки, но он не работает в строке, где у меня ints переданы как 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)

Ouptput

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
                                ^

Желаемый результат Я хотел бы иметь возможность создать класс для широкого, другой для узкого, и когда я создаю один из них, я могу получить объекты предопределенного размера, и когда я их распечатаю, я могу увидеть имена параметров.

1 Ответ

1 голос
/ 17 июня 2020

Когда вы объявляете функцию 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...