python - 如何使用具有定义大小的对象创建类
问题描述
我需要创建在显示器上产生定义方块的对象。我想如果我为每个对象创建一个单独的类,我将能够创建一个已经具有正确大小的类实例,并使用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 创建一个类,另一个为窄类,当我实例化时,我可以获得预定义的大小对象,当我打印它们时,我可以看到参数名称。
解决方案
当你声明一个 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)
推荐阅读
- swift - 当我尝试改变存储有颜色值的变量时出现错误
- azure - 来自 Azure 应用程序网关 V2 的多个登录提示
- ajax - Laravel 关系方法从数组中获取一些总数
- angular - 在 ion-virtual-scroll 之前添加内容时出现 ionic 4 问题
- python - 这个重复代码的优雅解决方案?
- python - 如何以 2 位格式获取日期和时间?
- javascript - jQuery - 输入更改事件未在移动/iPhone/iPad 上触发
- python - 带有 python 3.7.3 的 Telethon 版本 1.11.3 似乎无法正常工作
- python - 如何在同一个周期中访问模板中的多个查询集?
- vue.js - 如何获取从 vue 事件总线发出的最后一个值?