Python:如何使用类方法在__init__函数中定义变量?

时间:2014-02-20 02:37:11

标签: python class methods initialization

class TextToNumbers():
    def __init__(self, number):
        self.text = str(number)
        self.chunks = parse_text_to_chunks(self.text)

    def parse_text_to_chunks(text_to_parse):
        #stuff

这是我正在建设的课程的一个例子。我希望它在初始化时使用类方法定义一些变量。 (至少我认为这就是我想要的)我想如果我谈到我的最终目标,那就是我有一组复杂的信息需要在初始化时直接提供给一个类。如何在初始化时调用类方法来定义类变量?

1 个答案:

答案 0 :(得分:1)

如果您正在寻找在初始化期间调用实例方法的方法,可以使用self来调用此类

class TextToNumbers():
    def __init__(self, number):
        self.text = str(number)
        self.chunks = self.parse_text_to_chunks(self.text)
        print self.chunks

    def parse_text_to_chunks(self, text_to_parse):
    # 1st parameter passed is the current INSTANCE on which this method is called
        self.var1 = text_to_parse[1:]
        return self.var1

TextToNumbers(123)

我相信这是你真正需要的。但是如果你想要一个类方法

class TextToNumbers():
    def __init__(self, number):
        self.text = str(number)
        self.chunks = TextToNumbers.parse_text_to_chunks(self.text)
        print self.chunks

    @classmethod
    def parse_text_to_chunks(cls, text_to_parse):
    # 1st parameter passed is the current CLASS on which this method is called
        cls.var1 = text_to_parse[1:]
        return cls.var1

TextToNumbers(123)

但是创建一个类方法来初始化__init__中的类变量是没有意义的,因为类变量由类的所有实例共享,从__init__调用将每次都覆盖一个对象已创建。