【问题标题】:Class property object converted into string类属性对象转换为字符串
【发布时间】:2016-12-18 12:09:14
【问题描述】:

对于一个项目,我需要从网站获取信息。我想写一个类来单独处理那部分。

现在我正在通过请求模型获取 HTML 的内容并使用它:

def get_line(self):
       for line in self.r.iter_lines():
              self.i = self.i+1
              if self.i == self.zeile:
                    return str(line)
              elif self.i > self.zeile:
                    break

函数来获取特定的 HTML 行。现在我想将 line 的内容保存在一个变量中,并使用了这个:

temp_string = property(get_line)

现在的问题是我有一个属性对象而不是字符串,但是为了进一步削减这个 HTML 的内容,我想使用.find 方法来动态获取剪切字符串的起点和终点。

但是,如果我将属性转换为字符串,它会将 HTML(之前在将其打印到控制台时完美显示)更改为:

<property object at 0x0000020208A5D818>

我做错了什么?

【问题讨论】:

  • 那么...你为什么打电话给property
  • 好吧,你创建了一个属性。属性是一个对象,当您尝试访问实例上的属性 时,它将为您调用底层函数。你期望它做什么?
  • 好吧,我看到网站上使用的属性与类的 getter 和 setter 结合使用,所以我认为我可以在类中动态创建变量,所以当我实例化它时,我只需要访问结果没有任何方法调用的属性。基本上把所有的工作位都放在黑盒里,只关心结果。

标签: python string properties type-conversion


【解决方案1】:

那...不是属性的用途或使用方式。

get_line 已经返回一个字符串。如果您想要结果,那么只需在您的实例上调用它:

line = my_instance.get_line()

【讨论】:

  • 我的目标是在实例化之前计算变量行,以便所有内容都保存在对象中,我只需将类实例化一次,并且已经在变量中获得了我想要的结果,而无需更多操作。跨度>
  • 不知道如何编辑我的评论,所以我不得不使用另一个评论。问题是,类和对象是最好的方法还是有更简单的方法?还是我需要一个动作对象之类的东西来完成它里面的所有计算?
  • 但这怎么能行呢?您的逻辑取决于实例值,那么如何在创建实例之前计算它?
  • 所以首先我必须承认我对编程相当陌生,这是我第一次涉足 oop,所以我什么都不知道。我认为可能的是:在课堂上写下计划,当我用特定的 url 实例化该类时,该类在那个时间点就知道它必须做什么才能给我想要的结果。这是否意味着我必须编写一个函数来调用实例对象的所有方法才能得到我的结果?有没有办法把这项工作放在类本身?
  • welp 我在代码上做了更多工作,我现在按照我想要的方式工作了。我添加了另一个调用 get_line 方法的 main() 方法,将 get_line 方法更改为设置 self.temp_string = line 并在处理初始化对象的类之外创建了一个函数,调用 main 方法,而不是简单地返回结果。至少我现在知道下次该怎么做了XD
猜你喜欢
  • 2019-03-10
  • 1970-01-01
  • 2022-01-27
  • 2017-02-17
  • 2017-02-07
  • 2020-01-30
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多