1

不知道为什么这段代码不起作用。

class convert_html(sublime_plugin.TextCommand):
  def convert_syntax(self, html, preprocessor)
    return "this is just a " + preprocessor + " test"

  def convert_to_jade(self, html):
    return self.convert_syntax(html, "jade")

  def run(self, edit):
    with open(self.view.file_name(), "r") as f:
      html = f.read()
      html = html.convert_to_jade(html)
      print(html)

它说AttributeError: 'str' object has no attribute 'convert_html'

我如何使它工作?

4

1 回答 1

6

您需要convert_to_jade()使用变量调用该方法,该self变量充当对类的当前对象的引用。非常类似于or中的this指针C++java

  html = self.convert_to_jade(html)

当您调用self.something(). 如果没有实例句柄(即self),您将无法访问任何实例变量。

顺便说一句,将实例方法的第一个参数命名为 并不是强制性的self,但这是一种常用的约定。

更多关于self 这里

以下代码应该可以工作:

class convert_html(sublime_plugin.TextCommand):
  def convert_syntax(self, html, preprocessor):
    return "this is just a " + preprocessor + " test"

  def convert_to_jade(self, html):
    return self.convert_syntax(html, "jade")

  def run(self, edit):
    with open(self.view.file_name(), "r") as f:
      html = f.read()
      html = self.convert_to_jade(html)
      print(html)
于 2013-03-09T05:56:12.313 回答