Python 课堂上的相似方法
我想在类中创建两个非常相似的方法 方法中唯一的区别是将元素添加到Python 课堂上的相似方法,python,methods,Python,Methods,我想在类中创建两个非常相似的方法 方法中唯一的区别是将元素添加到列表中,其他代码保持不变 class Test: a = [] def test1(self): ... self.a.append('test1') ... def test2(self): ... self.insert(0, 'test2') ... def compute(self):
列表中,其他代码保持不变
class Test:
a = []
def test1(self):
...
self.a.append('test1')
...
def test2(self):
...
self.insert(0, 'test2')
...
def compute(self):
while not self.is_answer:
node = self.visited[0]
for operator in self.order:
next_node = node.next_node(operator)
if (next_node and next_node not in self.computed
and next_node not in self.visited):
if next_node.check_answer():
self.is_answer = True
print('Answer found')
break
else:
self.visited.insert(0, next_node) <--- here I want change methods
self.computed.append(self.visited.pop(0))
self.depth += 1
类测试:
a=[]
def测试1(自我):
...
self.a.append('test1')
...
def测试2(自我):
...
self.insert(0,“test2”)
...
def计算(自我):
虽然不是self.is_回答:
节点=自访问[0]
对于自动排序的操作员:
下一个节点=节点。下一个节点(运算符)
if(next_节点和next_节点不在self.computed中
下一个_节点不在self.visted中):
如果是下一个节点,请检查\u answer():
self.is_答案=真
打印('找到答案')
打破
其他:
self.visted.insert(0,next_node)我不知道您的确切代码是什么样子,但您可以执行以下操作:
class Test:
a = []
def test1(self):
self._similar_code()
self.a.append('test1')
def test2(self):
self._similar_code()
self.insert(0, 'test2')
def _similar_code(self):
pass
或
编辑
def compute(self, option):
while not self.is_answer:
node = self.visited[0]
for operator in self.order:
next_node = node.next_node(operator)
if next_node and next_node not in self.computed and next_node not in self.visited:
if next_node.check_answer():
self.is_answer = True
print('Answer found')
break
else:
if (option):
self.visited.insert(0, next_node)
else:
self.visited.append(next_node)
self.computed.append(self.visited.pop(0))
self.depth += 1
在类中为所有逻辑创建一个方法,而不在列表中插入。使用前导下划线命名,因为它应该被视为私有的
def _process (self):
...
...
然后:
如果您需要在插入之前和之后执行操作,请创建两个新方法。self.insert(0,'test2')
是打字错误吗?很难用这个小例子来说明问题,我不认为把它们分开有什么问题,除非这些方法是相对实质性的,并且在一个小细节上有所不同。我已经更新了我的问题,这对你有帮助吗?是的,它是有效的,但对于许多方法来说,如果没有其他方法,这一过程会很长。有没有办法在没有“if”的情况下将此方法作为参数传递?compute()
方法调用其他两种方法,因此不清楚“方法中的唯一差异”是什么意思。请回答您的问题,并尝试更清楚地解释您想要什么。此方法嵌套了一些循环和ifs。我添加了有问题的示例。
def _process (self):
...
...
def test1(self):
self._process()
self.a.append('test1')
def test2(self):
self._process()
self.insert(0, 'test2')