python为string.Method创建方法对象

时间:2012-05-07 15:55:05

标签: python jython

我有一个输出很多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。:然后通过以下类方法完成对齐切换:

2 个答案:

答案 0 :(得分:1)

你可以做

import string

在文件的开头,或使用

str.ljust
str.rjust
str.center

而不是string的相应用法。另外,您不要在当前代码中调用setJustification

答案 1 :(得分:0)

我希望你看看getattr方法从字符串中获取函数对象。 代码中的以下行应该让你的东西工作

{ self.justify = getattr(' ', 'ljust', None)}