0

我有一个输出很多文本块的类,这取决于我希望它证明文本右/左/中心的初始参数。我想知道是否可以使用方法对象(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

但是我不知道我得到了字符串数据类型成员的函数对象。

我怎样才能实现后者?(前者有太多不必要的不​​利于性能的检查)

ps:我必须使用基本上是python 2.5的jython

pps:然后将使用以下类方法完成对正切换:

4

2 回答 2

1

你可以做

import string

在文件的开头,或使用

str.ljust
str.rjust
str.center

而不是string. 此外,您不会调用setJustification当前代码。

于 2012-05-07T16:33:15.837 回答
0

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

{ self.justify = getattr(' ', 'ljust', None)}
于 2012-05-07T17:50:18.807 回答