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

Python:如何使用类方法在_init__函数中定义变量?,python,class,methods,initialization,Python,Class,Methods,Initialization,这是我正在创建的一个类的示例。我希望它在初始化时用类方法定义一些变量。(至少我认为这是我想要的)我认为如果我谈论我的最终目标,那就是我有一组复杂的信息,需要在初始化时直接获得关于类的信息。如何在初始化时调用类方法来定义类变量?如果您想在初始化期间调用实例方法,可以使用self这样调用 class TextToNumbers(): def __init__(self, number): self.text = str(number) self.chunks

这是我正在创建的一个类的示例。我希望它在初始化时用类方法定义一些变量。(至少我认为这是我想要的)我认为如果我谈论我的最终目标,那就是我有一组复杂的信息,需要在初始化时直接获得关于类的信息。如何在初始化时调用类方法来定义类变量?

如果您想在初始化期间调用实例方法,可以使用
self
这样调用

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
我相信这才是你真正需要的。但是如果你想要一个类方法

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)

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

为什么要这样做?如果您在
\uuuu init\uuuu
中初始化一个类变量,那么这样做的意义是什么?您正在寻找
self.parse\u text\u to\u chunk(self.text)
?不确定。我不想以后告诉它去解决它。有没有更好的方法来实现这一点?例如,按照上面的例子,我不想以后说
object.parse_text_to_chunks
我只想让它自己自动完成,并将该值赋给一个变量。正如@BrenBarn刚刚指出的那样,显然我能做到,我只是遇到了一些愚蠢的错误语法问题。所以你这么说是因为self.chunks总是相同的(因为它与self.text相关),所以我不希望它在init中?那么它应该属于哪里?
\uuuuuu init\uuuuu
变量对于类的每个实例都是唯一的,在每个类中都不相同,所以我不希望在类中有一个方法,允许类的每个实例找出它自己的唯一变量吗?@Borromakot您对
\uuuuuuuu
变量的看法是正确的,我想说的是,类变量与实例变量不同。用self.在
\uuuuuu init\uuuuu
中创建的变量称为实例变量。好吧,我想你的例子为我解决了所有问题,然后我的经验不足将对话与不正确的词汇混淆了。非常感谢@Borromakot没问题:)享受Python:)
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)