我有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作为打印输出?
在第二个版本中,你是在调用 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
在你的自动示例中,你没有调用 "theClass". 任何函数调用都需要 ()
.你可以重新命名你的自动 validator
的 __call__
称之为 theClass()
.
如果您只是想打印输出值,而不是将其作为一个变量,您可以定义 __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
那么在这种情况下,使用自定义类就不是办法了。
打印在 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