【问题标题】:Returning value when calling instance python调用实例python时返回值
【发布时间】:2019-04-13 10:45:51
【问题描述】:

我想知道如何实现这种行为。

在python中调用变量时,会直接显示一些值。

喜欢:

>> a= 5
>> a
5

像 numpy 这样的库也这样做

>> a = np.array([1,2])
>> a
>> array([1,2])

发生这样的事情对吗? 所以我想模仿这种行为来构建一个类

class example(object):
   def __init__(self,intputs):
       self.out = inputs
...
instance = example(inputs)

这样写的时候

instance

直接等价于做

instance.out

因为我知道的最相似的事情是设置 call 来做到这一点,但在这种情况下,它会用括号调用 instance()

【问题讨论】:

  • 交互式 shell(即 REPL)实际上是在打印值,而不是 Python 解释器。
  • 你的意思是 instance = example(inputs) 吗?

标签: python class call


【解决方案1】:

我不确定您为什么要这样做。处理打印出类实例值的正确方法是为您的类提供__str__ 或__repr__ 方法(取决于您想看到的具体内容),调用该方法并打印结果。大多数情况下,一个简单的__str__ 调用就足够了:

class example(object):
    def __init__(self,intputs):
        # your init code here

    def __str__(self):
        # construct a string for the class value and return it
        return str(self.some_value)

然后,您将执行以下操作来获取代码中的字符串表示形式:

instance = example(some_value)
print(str(instance))

这里是a helpful article 和relevant SO question 关于__str__ 和__repr__ 之间的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-16
    • 2023-01-17
    • 2021-11-03
    • 1970-01-01
    • 2019-04-13
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多