英文:
How can I create multiple instances of a class and pass in values without having to do it manually?
问题
让我们假设我们有一个名为A的类
class A:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
我想要接受多个输入并将它们作为参数传递给这个类
a = input()
b = input()
c = input()
d = input()
e = input()
f = input()
g = input()
h = input()
i = input()
ins1 = A(a, b, c)
ins2 = A(d, e, f)
ins3 = A(g, h, i)
我如何在不必像这样手动输入的情况下创建这些实例呢?
我尝试使用for
循环,但我无法弄清楚如何使它工作。
英文:
Let's say we have a class called A
class A:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
I want to take multiple inputs and pass them as arguments to the class
a = input()
b = input()
c = input()
d = input()
e = input()
f = input()
g = input()
h = input()
i = input()
ins1 = A(a, b, c)
ins2 = A(d, e, f)
ins3 = A(g, h, i)
How can I create these instances without having to type them like this?
I tried using a for
loop but I couldn't figure out how I can make it work.
答案1
得分: 2
如果您不需要变量 a
-i
用于除了创建 A
实例之外的其他任何事情,并且可以使用 list
(比如 ins
)而不是单独的变量 ins1
、ins2
、ins3
,您可以在循环中创建这些实例:
英文:
If you don't need the variables a
–i
for anything else than creating the instances of A
and can use a list
(say ins
) instead of individual variables ins1
, ins2
, ins3
, you can create the instances in a loop:
ins = [
A(input(), input(), input())
for _ in range(3)
]
答案2
得分: 0
你有2个常量。一个是你想构建的类的数量,另一个是类构造函数所需的参数数量(输入)。
# 定义常量
NINPUTS = 3
NCLASSES = 3
# 定义类
class A:
def __init__(self, *params: str) -> None:
assert len(params) == NINPUTS
self._a, self._b, self._c = params
def __str__(self) -> str:
return f'a={self._a}, b={self._b}, c={self._c}'
# 获取一定数量输入的便捷函数(作为字符串)
def get_inputs(n: int) -> list[str]:
return [input() for _ in range(n)]
# 使用列表推导构建类的列表
classes = [A(*get_inputs(NINPUTS)) for _ in range(NCLASSES)]
# 打印列表
print(*classes, sep='\n')
这是你的代码,已经翻译好了。
英文:
You have 2 constants. One is the number of classes you want to construct and the other is the number of parameters that the class constructor requires (inputs).
# define the constants
NINPUTS = 3
NCLASSES = 3
# define the class
class A:
def __init__(self, *params: str) -> None:
assert len(params) == NINPUTS
self._a, self._b, self._c = params
def __str__(self) -> str:
return f'a={self._a}, b={self._b}, c={self._c}'
# convenience function for acquiring a number of inputs (as strings)
def get_inputs(n: int) -> list[str]:
return [input() for _ in range(n)]
# list comprehension to construct a list of classes
classes = [A(*get_inputs(NINPUTS)) for _ in range(NCLASSES)]
# print the list
print(*classes, sep='\n')
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论