如何解决通过多种方法减少通用命令-Python
对于不同的类,我对共享库s具有不同的设置(例如:地址)。 每次从类ItemA和ItemB开始调用该方法时,我都必须增强地址变量s.addr,以将s.addr设置为不同的地址。有没有一种方法可以简化这种冗余?
例如:
class ItemA:
def __init__(self,s,addr):
self.s = s
self.addr = addr
def a(self,addr):
self.s.addr=self.addr # anyway to remove this line that exist in every method
self.s.run_a()
def b(self,addr):
self.s.addr=self.addr #
self.s.run_b()
class ItemB:
def __init__(self,addr): # take same s as ItemA
self.s = s
self.addr = addr
def a(self,addr):
self.s.addr=self.addr #
self.s.run_a()
def c(self,addr):
self.s.addr=self.addr #
self.s.run_c()
Items A,B被随机调用,因此在每种方法中都需要更新地址。
A=ItemA(s,9) # object s,address 9
B=ItemB(s,7) # same object s,but use address 7
A.a()
B.a()
B.c()
A.b()
有关其他信息,请使用GPIB控制仪器,每个仪器都有不同的地址。 s是期望将通用命令发送到s.addr中指定的地址。但是对更一般的python问题感兴趣。
解决方法
您有三个类:ItemA
,ItemB
,以及任何生成S
的类。 S
对象在A和B对象之间“共享”。 S
具有每个类使用的标识符,但是A和B之间的值不同。您将这两个标识符称为“地址”。您想知道如何维护“ the”地址,以便A和B中的每一个都访问特定于该类的地址。
如我所见,问题很简单:这是两个不同的属性,但是您正在尝试将它们填充为一个。如您所见,这不起作用。相反,您需要为每个“地址”创建一个属性-仅仅因为A和B对功能使用相同的外部术语,不会强制您使用单个变量。
例如:
class ItemA:
def __init__(self,s,addr):
self.s = s
self.s_addr = addr
def a(self):
self.s.run_a(self.s_addr)
这会让你动起来吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。