类函数返回不同的结果

问题描述 投票:0回答:2

我有2种不同的方法来设置一个python类。一种是自动运行类的函数,一种是需要手动运行的函数。

手动运行函数。

class testclass:
   def __init__(self, value):
      self.value = value

   def validator(self):
      data = self.value[0] + self.value[1]
      data = int(data)
      return data
theClass = testclass('123456')
print(theClass.validator())

这将打印出 "12"

自动运行该功能。

class testclass:
   def __init__(self, value):
      self.value = value
      self.validator()

   def validator(self):
      data = self.value[0] + self.value[1]
      data = int(data)
      return data
theClass = testclass('123456')
print(theClass)

这将打印"<.testclass对象在0x011C72B0>"

我怎样才能自动运行类函数,并且仍然得到12作为打印输出?

python class output
2个回答
1
投票

在第二个版本中,你是在调用 validator 作用于 __init__的值,但不返回 validator 正在返回。问题是 __init__ 只能够返回 None. 你可以做的是将该值分配给一个实例变量。

class testclass:
  value = 0
  def __init__(self, value):
      self.value = value
      self.value = self.validator()

  def validator(self):
      data = self.value[0] + self.value[1]
      data = int(data)
      return data
theClass = testclass('123456')
print(theClass.value)

Ouptut:

12

1
投票

在你的自动示例中,你没有调用 "theClass". 任何函数调用都需要 ().你可以重新命名你的自动 validator__call__ 称之为 theClass().

查看更多 https:/www.journaldev.com22761python-callable-召唤


0
投票

如果您只是想打印输出值,而不是将其作为一个变量,您可以定义 __str__ 作为类的一部分。

class testclass(object):
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return self.validator()

    def validator(self):
        data = self.value[0] + self.value[1]
        data = int(data)
        return data

>>> theClass = testclass('123456')
>>> print(theClass)
12

如果你想把它作为一个变量来使用,如 theClass + 5那么在这种情况下,使用自定义类就不是办法了。


0
投票

打印在 validator 函数。

class TestClass:  # sticking to more Pythonic naming conventions
    def __init__(self, value):
        self.value = value
        self.validator()

    def validator(self):
        print(int(self.value[0] + self.value[1]))

每当创建一个实例时,它将自动打印验证输出。

>>> the_class = TestClass('123456')
12
© www.soinside.com 2019 - 2024. All rights reserved.