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