Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 类函数返回不同的结果_Python_Class_Output - Fatal编程技术网

Python 类函数返回不同的结果

Python 类函数返回不同的结果,python,class,output,Python,Class,Output,我有两种不同的方法来设置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(

我有两种不同的方法来设置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())
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)
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]))
这是“12”

自动运行该功能:

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())
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)
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]))
这张照片显示“


如何自动运行类函数,并且仍然获得12作为打印输出?

如果您只想打印输出值,而不将其用作变量,则可以将
\uu str\uuu
定义为类的一部分

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

如果您想将其用作变量,例如类+5,那么在这种情况下,使用自定义类就不是一个好办法。

如果您只想打印输出值,而不想将其用作变量,则可以将
\uu str\uuu
定义为类的一部分

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

如果您想将其用作变量,例如
类+5
,那么在这种情况下,使用自定义类不是一个好办法。

验证程序中打印
函数:

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())
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)
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

验证程序
功能内打印:

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())
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)
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

在您的自动示例中,您没有调用“类”。任何函数调用都需要
()
。 您可以将自动
验证器重命名为
\uuuuu call\uuuu
,并将其称为
theClass()


请参阅自动示例中的更多内容,您没有调用“类”。任何函数调用都需要
()
。 您可以将自动
验证器重命名为
\uuuuu call\uuuu
,并将其称为
theClass()


查看第二个版本中的更多信息,您正在调用
中的
验证程序
函数,但不返回
验证程序
返回的值。问题是
\uuuu init\uuuu
只能返回
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)
乌普图特:

12

在第二个版本中,您正在调用
中的
验证器
函数,但不返回
验证器
返回的值。问题是
\uuuu init\uuuu
只能返回
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)
乌普图特:

12