【问题标题】:Python Returns on calling class objectPython 返回调用类对象
【发布时间】:2013-02-01 18:15:51
【问题描述】:

我正在用 Python 编写一个名为 House 的类。它具有实例变量,例如街道名称和街道编号。

h = House(1234, "main street")
>>>h.street_name
Main Street
>>>h.street_number
1234

>>>h
<__main__.House object at 0x27ffbd0>

当您调用“h”时,程序应该返回“1234 Main Street”。我应该如何解决这个问题?

【问题讨论】:

  • Python 命令提示符不是“调用”对象,而是调用对象的 __repr__() 方法,该方法假定返回表示对象值的字符串。如果对象没有__repr__() 方法,但有__str__() 方法,它将使用它。对于没有这两者的类,您所看到的是默认方法返回的内容。
  • 当你说“call h”时,你的意思是h()吗?

标签: python class methods return


【解决方案1】:

您想定义一个返回字符串表示的__str__ 方法。例如:

class House:
    # other methods
    def __str__(self):
        return "%d %s" % (self.street_number, self.street_name)

【讨论】:

  • __repr__ 应该返回有效的 Python 表达式,如果可能的话重建对象。 __str__ 用于转换为字符串。
  • @CatPlusPlus:谢谢,已修复
【解决方案2】:

....Python 中的一个类,叫做 House。它有实例变量......

一个类没有实例变量。实例有

.

“变量”在 Python 中是一个令人困惑的词。
Python 不向开发者提供“变量”(= 框),只向开发者提供对象。
人们混淆地称为“变量”的大部分时间是标识符(=名称)......或者也许......什么......我不知道,他们也不知道自己,因为没有变量Python中developper的使用....

.

如果h 不是可调用对象(类、函数......),则不能调用它

你所说的“调用”只是对 Python 的需求,向你呈现对象 h。由于它不是像整数或字符串那样的简单对象,而是一个实例,即具有数据属性和方法的属性的对象,Python 不会广泛地向您展示具有所有属性的实例和属性的值(对于某些实例可能很长),它会为您提供实例的简短描述,说明它是哪个类的实例,并给出它的地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2022-01-17
    相关资源
    最近更新 更多