从用户输入创建对象
creating an object from user input
所以我是 python 的新手,我想制作一个程序,根据用户输入创建一个 class 的对象,所以我不必将 10 设为空配置文件。我这样试过,知道它会是假的,但我认为它证明了我的问题。
class Profile():
def __init__(self, weight, height):
self.weight = weight
self.height = height
def create_object():
name = input("What's your name?")
new_weight = input("What's your height?")
new_height = input("What's your weight?")
name = Profile(new_weight, new_height)
return name
如果我现在要创建对象:
>>> create_object()
What's your name? test
What's your height? 23
What's your weight? 33
<__main__.Profile object at 0x000002564D7CFE80>
>>> test()
Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
test()
NameError: name 'test' is not defined
或者我应该使用字典吗?如果是,怎么办?
根据我的经验,没有必要具体命名 class 的每个实例。相反,您可以按照一些评论者的建议将每个新对象添加到字典中,如下所示:
object_dict = {}
for i in range(10):
name = input("what's your name")
object_dict[name] = create_object()
这里要注意的区别是我将您的函数的名称部分移到了 create_object()
范围之外。据我所知,没有“简单”或“干净”的方法可以在 python 中使用字符串作为用户输入来创建变量(尤其是如果您是 python 的新手)。
如果你做的事情不一定需要名字,用户的详细信息只是为了数据存储,那么在你的[=29]中将名字保存为一个属性会更简洁=],像这样:
class Profile():
def __init__(self, weight, height, name):
self.weight = weight
self.height = height
self.name = name
然后当您生成配置文件时,只需将它们添加到列表中即可:
for i in range(10):
object_list.append(create_object())
最后一件事,输入法总是returns一个字符串。因此,如果您打算对体重和身高值进行数学运算,则需要将输入从字符串更改为数字,您可以通过将 input()
调用包围在 int()
中来实现,例如
weight = int(input("What's your weight?"))
height = int(input("What's your height?"))
所以我是 python 的新手,我想制作一个程序,根据用户输入创建一个 class 的对象,所以我不必将 10 设为空配置文件。我这样试过,知道它会是假的,但我认为它证明了我的问题。
class Profile():
def __init__(self, weight, height):
self.weight = weight
self.height = height
def create_object():
name = input("What's your name?")
new_weight = input("What's your height?")
new_height = input("What's your weight?")
name = Profile(new_weight, new_height)
return name
如果我现在要创建对象:
>>> create_object()
What's your name? test
What's your height? 23
What's your weight? 33
<__main__.Profile object at 0x000002564D7CFE80>
>>> test()
Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
test()
NameError: name 'test' is not defined
或者我应该使用字典吗?如果是,怎么办?
根据我的经验,没有必要具体命名 class 的每个实例。相反,您可以按照一些评论者的建议将每个新对象添加到字典中,如下所示:
object_dict = {}
for i in range(10):
name = input("what's your name")
object_dict[name] = create_object()
这里要注意的区别是我将您的函数的名称部分移到了 create_object()
范围之外。据我所知,没有“简单”或“干净”的方法可以在 python 中使用字符串作为用户输入来创建变量(尤其是如果您是 python 的新手)。
如果你做的事情不一定需要名字,用户的详细信息只是为了数据存储,那么在你的[=29]中将名字保存为一个属性会更简洁=],像这样:
class Profile():
def __init__(self, weight, height, name):
self.weight = weight
self.height = height
self.name = name
然后当您生成配置文件时,只需将它们添加到列表中即可:
for i in range(10):
object_list.append(create_object())
最后一件事,输入法总是returns一个字符串。因此,如果您打算对体重和身高值进行数学运算,则需要将输入从字符串更改为数字,您可以通过将 input()
调用包围在 int()
中来实现,例如
weight = int(input("What's your weight?"))
height = int(input("What's your height?"))