我有一个输出很多textchunks的类,这取决于我想要它来证明文本右/左/中心的初始参数。我想知道是否可以使用方法对象(http://docs.python.org/py3k/tutorial/classes.html#method-objects)而不是像
这样的函数class textOutput(object):
def __init__(self):
self.justification = "left"
def justify(self,text):
if self.justification == "right":
return text.rjust(self._width)
elif self.justification == "center":
return text.center(self._width)
else:
return text.ljust(self._width)
def output(self):
for i in range(1 to 1000000):
print self.justify(i)
我想使用这样的函数对象(替换上面的justify方法)
class textOutput(object):
def __init__(self):
self.justify = string.ljust
def output(self):
for i in range(1 to 1000000):
print self.justify(i,self._width)
def setJustification(self, justification):
if justification == "right":
self.justify = string.rjust
elif justification == "center":
self.justify = string.center
else:
self.justify = string.ljust
但是我不知道我为string-datatype成员获得了functionobjects。
如何实现后期? (前者有太多不必要的检查与性能有关)
p.s。:我必须使用基本上是python 2.5的jython
p.p.s。:然后通过以下类方法完成对齐切换:
答案 0 :(得分:1)
你可以做
import string
在文件的开头,或使用
str.ljust
str.rjust
str.center
而不是string
的相应用法。另外,您不要在当前代码中调用setJustification
。
答案 1 :(得分:0)
我希望你看看getattr方法从字符串中获取函数对象。 代码中的以下行应该让你的东西工作
{ self.justify = getattr(' ', 'ljust', None)}