我有2种不同的方式来设置python类。一种自动运行class函数,另一种需要手动运行。
手动运行功能:
> dat1
Loc Region Region2 ID var1 var2
1 NY a Pi 1 0.61701016 0.06120094
2 NY a Pi 1 -0.44713950 -0.25283486
3 NY a Pi 1 0.15848100 1.00864335
4 NY a Pi 1 -0.51399894 -0.65522884
5 NY a Pi 1 -1.12276336 2.63413137
6 NY a Pi 2 -0.44713902 -0.30533290
7 NY a Pi 2 -2.11185370 0.09849320
8 NY a Pi 2 -0.72809863 -0.68920879
9 NY a Pi 2 -0.24670036 0.31428066
10 NY a Pi 2 -0.61361568 0.92017453
11 MA b La 3 0.10394785 -1.51214696
12 MA b La 3 -0.80057855 -0.01470235
13 MA b La 3 1.32370390 0.60565166
14 MA b La 3 0.03116408 -1.01688085
15 MA b La 3 -0.82361367 1.11563956
16 MA b La 4 -0.86675173 -0.26016376
17 MA b La 4 -1.25258158 1.03647590
…
这将显示“ 12”
自动运行该功能:
pSinkWriter->WriteSample(streamIndex, spSample));
这将打印“ << strong>主要 .testclass对象,位于0x011C72B0>”
我如何自动运行class函数,但仍获得12作为打印输出?
答案 0 :(得分:1)
在您的自动示例中,您未在调用“ theClass”。任何函数调用都需要()
。
您可以将自动validator
重命名为__call__
,并将其命名为theClass()
。
在https://www.journaldev.com/22761/python-callable-call上查看更多信息
答案 1 :(得分: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)
输出:
12
答案 2 :(得分: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
,那么在这种情况下,使用自定义类是不可行的。
答案 3 :(得分: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