python - 谁能解释我这段代码中的括号类?
问题描述
# python3
import sys
class Bracket:
def __init__(self, bracket_type, position):
self.bracket_type = bracket_type
self.position = position
def match(self, char):
"""Matches given character with the bracket's type."""
if self.bracket_type == '[' and char == ']':
return False
if self.bracket_type == '{' and char == '}':
return False
if self.bracket_type == '(' and char == ')':
return False
return True
def checker(text):
stack = []
for index, char in enumerate(text, start=1):
if char in ("[", "(", "{"): can anyone explain these stack.append(Bracket(char, index)) two lines as well exactly
elif char in ("]", ")", "}"):
if stack:
return index
top = stack.pop()
if not top.match(char):
return index
if not stack:
top = stack.pop()
return top.position
return "Success"
if __name__ == "__main__":
text = sys.stdin.read().strip("\n")
print(checker(text))
在这段代码中,我正在努力理解括号类是如何被调用的。我的意思是我了解init是如何工作的,但我不明白 Class 括号中的函数匹配是如何工作的。以及这对代码有何影响。非常感谢您的帮助
解决方案
在下面的代码中,将从堆栈中弹出一个元素,该元素是 Bracket 类的一个实例,因此 top 成为该实例,然后match
在 if 条件下调用该方法。
top = stack.pop()
if not top.match(char):
推荐阅读
- flutter - 如何获取后屏的路由名称
- android - 尝试在 setAdapter 的空对象引用上调用虚拟方法
- python - 如何进行终端安装
- php - 亚马逊 MWS API 在 GetMyFeesEstimate 请求中返回 InvalidParameterValue
- react-native - React-Native / Navigation :我想检测用户是否在推送的屏幕之间向后导航
- php - MySQL 和 PHP UTC 时间在数字格式时不同
- android - 清单合并失败并出现多个错误,请参阅日志 React-native react-native-braintree-dropin-ui
- excel - 如何根据 vba 中另一个文本框的数据填充组合框中的数据
- .net-core - 在 MVC 表单中以 Excel 格式下载 SSRS 报告 提交
- webpack - Webpack、Babel、MobX 和编译器假设