在类中使用原始输入(python 2.7)

我想知道如何在类中使用原始输入,所以不要传递名称'Ryan',我们可以在对象内部传递一个变量,然后再请求该变量。

如:

name = raw_input("What is your name? ")

这里是我有的代码:

class Talk:
        def __init__(self, name):
                self.name = name
                print "Hey there, " + self.name

        def printName(self):
                print self.name

talk = Talk('Ryan')

通常,这可以通过类方法完成,将用户输入(和任何相关的验证)与新实例的__init__分开:

class Talk(object):

    def __init__(self, name):
        self.name = name
        print "Hey there, {}".format(self.name)

    def print_name(self):
        print self.name

    @classmethod
    def from_input(cls):
        """Create a new Talk instance from user input."""
        while True:
            name = raw_input("Enter your name: ")
            if name:
                return cls(name)

这将用于:

>>> talk = Talk.from_input()
Enter your name: Ryan
Hey there, Ryan
>>> talk.print_name()
Ryan

请注意,根据样式指南,我已将printName重命名为print_name 。 此外,这将是传统的 print从内__init__ ,并提供__str____repr__方法,而不是一个print_name (更多信息请参见Python的数据模型文档)。


你可以在类方法中调用函数。 这些方法包括__init__ 。 例如:

class Talk:
    def __init__(self):
        self.name = raw_input("What is your name: ")
        print "Hey there, " + self.name

    def printName(self):
        print self.name

talk = Talk()
链接地址: http://www.djcxy.com/p/54285.html

上一篇: Using raw input inside of a class (python 2.7)

下一篇: Trying to create an object via a user's input