当前位置: 首页 > news >正文

pjblog wordpressseo搜索引擎优化试题及答案

pjblog wordpress,seo搜索引擎优化试题及答案,柬埔寨做赌博网站,2021最新网页游戏开服表TypeError: unbound method 错误通常发生在类方法被调用时,但没有正确绑定到实例。这通常意味着你试图在类本身上调用一个实例方法,或者没有使用正确的方式创建类实例。 1、问题背景 某位开发者在尝试创建一个类似于经典的 Pratt 递归下降解析器时遇到了…

TypeError: unbound method 错误通常发生在类方法被调用时,但没有正确绑定到实例。这通常意味着你试图在类本身上调用一个实例方法,或者没有使用正确的方式创建类实例。

在这里插入图片描述

1、问题背景

某位开发者在尝试创建一个类似于经典的 Pratt 递归下降解析器时遇到了 “TypeError: unbound method” 的错误。在简化了代码之后,开发者发现问题出在对中缀运算符的处理上,具体来说是 infix_led 函数没有正确绑定到 symbol 类的实例。

2、解决方案:

有两种解决方案:

方法1:
tokenize() 函数中,每当遇到一个非数字的运算符时,不直接生成一个 symbol 类,而是生成一个 symbol() 的实例。这确保了每个运算符都有一个单独的实例,可以绑定各自的 led 函数。

方法2:
使用 types.MethodType 函数将 infix_led 函数绑定到 symbol 类的实例上。这是一种更显式的绑定方式,也确保了每个运算符都有一个单独的实例,可以绑定各自的 led 函数。

代码示例:

class Symbol_base(object):""" A base class for all symbols"""id = None # node/token type namevalue = None #used by literalsfirst = second = third = None #used by tree nodesdef nud(self):""" A default implementation for nud """raise SyntaxError("Syntax error (%r)." % self.id)def led(self,left):""" A default implementation for led """raise SyntaxError("Unknown operator (%r)." % self.id)def __repr__(self):if self.id == "(name)" or self.id == "(literal)":return "(%s %s)" % (self.id[1:-1], self.value)out = [self.id, self.first, self.second, self.third]out = map(str, filter(None,out))return "(" + " ".join(out) + ")"symbol_table = {}
def symbol(id, bindingpower=0):""" If a given symbol is found in the symbol_table return it.If the symblo cannot be found theni create the appropriate classand add that to the symbol_table."""try:s = symbol_table[id]except KeyError:class s(Symbol_base):passs.__name__ = "symbol:" + id #for debugging purposess.id = ids.lbp = bindingpowersymbol_table[id] = selse:s.lbp = max(bindingpower,s.lbp)return sdef infix(id, bp):""" Helper function for defining the symbols for infix operations """def infix_led(self, left):self.first = leftself.second = expression(bp)return selfsymbol(id, bp).led = infix_led#define all the symbols
infix("+", 10)
symbol("(literal)").nud = lambda self: self #literal values must return the symbol itself
symbol("(end)")token_pat = re.compile("\s*(?:(\d+)|(.))")def tokenize(program):for number, operator in token_pat.findall(program):if number:symbol = symbol_table["(literal)"]s = symbol()s.value = numberyield selse:symbol = symbol_table.get(operator)if not symbol:raise SyntaxError("Unknown operator")yield symbol()symbol = symbol_table["(end)"]yield symbol()def expression(rbp = 0):global tokent = tokentoken = next()left = t.nud()while rbp < token.lbp:t = tokentoken = next()left = t.led(left)return leftdef parse(program):global token, nextnext = tokenize(program).nexttoken = next()return expression()def __main__():print parse("1 + 2")if __name__ == "__main__":__main__()

在这个代码示例中,tokenize() 函数生成 Symbol_base 类的实例,并且使用 types.MethodType() 函数将 infix_led 函数绑定到每个实例上。这样就确保了每个运算符都有一个单独的实例,并且他们的 led 函数都正确绑定到了各自的实例上。

如果你遇到 TypeError: unbound method 错误,请确保你正确地实例化类,并通过实例调用方法。如果确实需要通过类调用方法,请使用 @classmethod@staticmethod 装饰器。

希望这个解释和解决方案对你有所帮助。

http://www.shuangfujiaoyu.com/news/45175.html

相关文章:

  • 做僾网站策划方案模板
  • 怎么做跟别人一样的网站个人开发app去哪里接广告
  • 沈阳微信网站建设logo网站设计
  • 江阴安泰物流有限公司网站谁做的app推广拉新渠道
  • 沭阳奥体小区做网站推广引流吸引人的标题
  • 网站会员充值接口怎么做的怎样上百度做广告
  • 做网站作业西安百度关键词排名服务
  • 团购网站怎么推广做销售怎样去寻找客户
  • b2b行业网站系统seo外链建设的方法有
  • b2c商城网站建设公司百度如何快速收录网站
  • 清湖网站建设百度竞价推广登录
  • 百度 新网站 重定向过多seo网络推广企业
  • 网站建设一般多少钱新闻广州seo优化费用
  • 推广方式英语专业的网站优化公司排名
  • 做家纺的主要国际网站营销技巧和营销方法心得
  • 汉字域名的网站最新收录查询
  • 免费网站推广咱们做机构类网站有哪些
  • 域名续费做网站搜索引擎seo优化怎么做
  • 网站建设 日志短视频优化
  • 珠海网站seoseo为什么要进行外部优化
  • 白帽网站友情链接发布网
  • 网站效果图用什么软件做酒泉网站seo
  • 大连网站优化技术百分百营销软件
  • 网上购物平台排名前十名手机游戏性能优化软件
  • 做ppt哪些网站的图片质量高做直销去哪里找客户
  • 网站未经授权推广别人的产品新闻株洲最新
  • 青岛网站建设套餐报价百度100%秒收录
  • 婚恋网站建设无锡谷歌推广
  • 网站营销外包公司简介怎么做好网络营销
  • 17网站一起做网店怎么拿货让手机变流畅的软件下载