使用用户输入创建对象的最 Pythonic 方式
The most Pythonic way to create an object with user inputs
我想知道创建参数来自用户输入的对象的最 Pythonic 方法是什么。考虑这个例子:
class SomeClass:
def __init__(self, a, b, c):
self.x= a
self.y= b
self.z= c
我是否应该在其他地方(在另一个模块中?)要求用户输入 a、b、c 的值的函数?或者,我是否应该将 x、y、z 设置为 None,然后从 init 函数调用提示用户设置参数值的辅助函数?最 Pythonic 的方法是什么?我已经与 Python 合作了几年,但我(终于)开始优先考虑样式和代码美学。
感谢您的帮助。
There are cases when we need to get user input in a python program then use it during the initialization of a class. For example, if we have a class ‘person’ that has two attributes first name and last name.
class Person:
"""
A representation of a person
Attributes:
Firstname(string)
Lastname(String)
"""
def __init__(self, first_name, last_name):
self.firstname = first_name
self.lastname = last_name
def show_full_name(self):
return self.firstname + ' ' + self.lastname
To create a person object using this class, we could supply arguments directly without requiring user input. See below.
#instance by supplying arguments
person1 = Person('John', 'Doe')
person1.show_full_name()
你可以用这个语句结束它
class SomeClass:
def __init__(self, a, b, c):
self.x= a
self.y= b
self.z= c
if __name__ == "__main__":
a = input("Enter a: ")
b = input("Enter b: ")
c = input("Enter c: ")
some_class = SomeClass( a , b, c )
除了 pythonic 编码方式之外,您还需要询问编码的一般原则。通常,您的程序中永远不会只有一个 class,除非您在只有一个源 (.py) 文件的情况下使用 python 编写脚本。您的程序中也有 user-input。您应该始终将数据和 UI 分开。因此,将 class 用于数据,将 UI 分开。 UI class 还可以在使用输入创建数据对象之前验证输入。
也许最 pythonic 的方法是使用 collections.namedtuple
import collections
a = input("Enter a: ")
b = input("Enter b: ")
c = input("Enter c: ")
obj = collections.namedtuple('Class', [a, b, c])
# Set value to each parameter
obj.a = 10
obj.b = 'Ghanteyyy'
obj.c = True
我想知道创建参数来自用户输入的对象的最 Pythonic 方法是什么。考虑这个例子:
class SomeClass:
def __init__(self, a, b, c):
self.x= a
self.y= b
self.z= c
我是否应该在其他地方(在另一个模块中?)要求用户输入 a、b、c 的值的函数?或者,我是否应该将 x、y、z 设置为 None,然后从 init 函数调用提示用户设置参数值的辅助函数?最 Pythonic 的方法是什么?我已经与 Python 合作了几年,但我(终于)开始优先考虑样式和代码美学。
感谢您的帮助。
There are cases when we need to get user input in a python program then use it during the initialization of a class. For example, if we have a class ‘person’ that has two attributes first name and last name.
class Person:
"""
A representation of a person
Attributes:
Firstname(string)
Lastname(String)
"""
def __init__(self, first_name, last_name):
self.firstname = first_name
self.lastname = last_name
def show_full_name(self):
return self.firstname + ' ' + self.lastname
To create a person object using this class, we could supply arguments directly without requiring user input. See below.
#instance by supplying arguments
person1 = Person('John', 'Doe')
person1.show_full_name()
你可以用这个语句结束它
class SomeClass:
def __init__(self, a, b, c):
self.x= a
self.y= b
self.z= c
if __name__ == "__main__":
a = input("Enter a: ")
b = input("Enter b: ")
c = input("Enter c: ")
some_class = SomeClass( a , b, c )
除了 pythonic 编码方式之外,您还需要询问编码的一般原则。通常,您的程序中永远不会只有一个 class,除非您在只有一个源 (.py) 文件的情况下使用 python 编写脚本。您的程序中也有 user-input。您应该始终将数据和 UI 分开。因此,将 class 用于数据,将 UI 分开。 UI class 还可以在使用输入创建数据对象之前验证输入。
也许最 pythonic 的方法是使用 collections.namedtuple
import collections
a = input("Enter a: ")
b = input("Enter b: ")
c = input("Enter c: ")
obj = collections.namedtuple('Class', [a, b, c])
# Set value to each parameter
obj.a = 10
obj.b = 'Ghanteyyy'
obj.c = True