Python 返回变量与设置变量

Python 返回变量与设置变量,python,oop,Python,Oop,我正在考虑以下初始化类的方法: class Foo(): def __init__(self): self.name = self.get_name() def get_name(self): return raw_input("Name: ") class Foo(): def __init__(self): self.name = "" self.get_name() def get_name(

我正在考虑以下初始化类的方法:

class Foo():
    def __init__(self):
        self.name = self.get_name()
    def get_name(self):
        return raw_input("Name: ")

class Foo():
    def __init__(self):
        self.name = ""
        self.get_name()
    def get_name(self):
        self.name = raw_input("Name: ")

class Foo():
    def __init__(self):
        self.name = raw_input("Name: ")
有什么实际的理由选择其中一个而不是其他的吗


如果不是,哪一个可能被认为是最具python风格的?

我不喜欢在构造函数中执行原始输入的想法,但毕竟,为什么不。。。 我希望:

class Foo():
    def __init__(self):
        self.name = ""

    def prompt_name(self):
        self.name = raw_input("Name: ")

if __name__ == "__main__":
    aFoo = Foo()
    aFoo.prompt_name()
  • 如果可能,
    input()
    在类之外输入名称,并将其作为参数传递给它的
    \uuuuu init\uuuuu()
  • 如果这不是一种选择,我会选择第二种选择
  • 我会将
    get\u name()
    重命名为类似
    query\u name()
    input\u name()
    get_name()
    听起来像一个getter(获取
    name
    的值),而不像setter或从用户获取数据的例程

我不会在对象内部使用
raw\u input()
,但那只是我自己。在构造对象时,将其移到外部并提供名称。方法#2基本上与#1相同。因此,基本上,您是在问设计类Foo的最佳方法是什么?好吧,我想最具python风格的应该是酒吧,虽然baz如果不是qux的话也有意义。我应该选择垃圾邮件。没有人会质疑垃圾邮件。为什么不呢?因为应用程序逻辑应该与获取输入分开。(如果可能的话。)
get\u name
应该返回
name
,因为它看起来像一个getter。+1很快,同意方法名称不是我的主要选择。。。已在编辑中修复:)