python - 类中的类似方法
问题描述
我想在课堂上创建两个非常相似的方法。
方法的唯一区别是向 a 添加元素的方式list
,其他代码保持不变。
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
有没有比复制粘贴代码更干净的方法?
解决方案
我不知道您的确切代码如何,但您可以执行以下操作:
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
或者
class Test:
a = []
def test(self, option):
codetoexecute
if (option):
self.a.append('test1')
else:
self.insert(0, 'test2')
编辑
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
推荐阅读
- python - 如何在python C-api中解析所需的互斥参数
- pandas - Anaconda Pandas 在 Python 3.6.x 上读取 hdf 文件时中断
- java - opencv从轮廓绘制矩形
- arangodb - ArangoDB 在每个 int 的文档中排序
- java - 将 java8 迁移到 java11:import com.sun.security.auth.module.NTSystem
- python - 在 Apache 上找不到静态文件
- reactjs - 如何获取对象 ID onPress 并将该值传递到 React Native 中的新屏幕?
- javascript - 当列表中存在重复值时显示警报消息
- regex - 将文件夹中的所有页面重定向到单个 URL(主页)的 RewriteRule 是什么?
- command - SCons env.Command() 没有按预期工作,没有执行命令