【问题标题】:Is there a way to append from user input in a class?有没有办法从类中的用户输入追加?
【发布时间】:2020-04-07 23:03:46
【问题描述】:

有没有一种方法可以实现用户输入以在我定义的这个类中创建一个新条目?

class Pulsar:
   'Collective base of all Pulsars'
   pulsarCount = 0

   def __init__(self, name, distance):
      self.name = name
      self.distance = distance
      Pulsar.pulsarCount += 1

   def displayCount(self):
     print( "Total Pulsars %d" % Pulsar.pulsarCount)

   def displayPulsar(self):
      print( "Name : ", self.name,  ", Distance: ", self.distance)

"This creates the first object"
pulsar1 = Pulsar("B1944+17", "979 Lightyears")
"This creates the second pulsar in the class"
pulsar2 = Pulsar("J2129-5721", "1305 Lightyears")
pulsar1.displayPulsar()
pulsar2.displayPulsar()
print( "Total Pulsars %d" % Pulsar.pulsarCount)

我希望用户能够输入自己的姓名/距离并将其附加到我当前定义的变量中。

【问题讨论】:

  • 你不能只使用一个获取 input() 的变量然后将其传入
  • 您应该创建一个Pulsar 实例列表,而不是将每个实例都存储在命名变量中。可以使用list.append() 方法创建添加实例。
  • 所以你想创建(使用)一个数据库...?
  • 嗨,罗杰,我对课程有点陌生,所以我不确定如何解决它们。 input() 变量是否会在类之外收集然后被接收,它是否会在运行的程序的多次迭代中工作?感谢您的宝贵时间。
  • Pulsar 对象是否只包含名称和距离?一个类可能是矫枉过正。

标签: python python-3.x class append


【解决方案1】:

根据你对 Pulsar 对象所做的事情,一个类可能是多余的。

class Pulsar:
    def __repr__(self) -> str:
        return f'Pulsar({self.name!r}, {self.distance!r})'

    def __init__(self, distance: str, name: str) -> None:
        self.name: str = name
        self.distance: str = distance


num_pulsars_input = int(input('How many pulsars do you wish to create: '))

pulsar_list = []

for _ in range(num_pulsars_input):
    curr_p_name = input('Enter pulsar name: ')
    curr_p_dist = input('Enter pulsar distance: ')
    curr_p = Pulsar(curr_p_name, curr_p_dist)
    pulsar_list.append(curr_p)

print(pulsar_list)

【讨论】:

  • for i in pulsar_list: print(i)
  • @noobninja 请原谅?
  • pulsar_list 返回[<__main__.Pulsar object at 0x7f6b91e500b8>, <__main__.Pulsar object at 0x7f6b91e50048>]
  • @noobninja 啊该死的,因为打印容器使用了 __repr__ 的内容。我会修复它。感谢您检查,我不敢相信我自己没有测试过 D:
  • @noobninja 应该可以,这次我测试了;)
【解决方案2】:
class Pulsar:
   'Collective base of all Pulsars'
   pulsarCount = 0

   def __init__(self, name, distance):
      self.name = name
      self.distance = distance
      Pulsar.pulsarCount += 1

   def displayCount(self):
     print( "Total Pulsars %d" % Pulsar.pulsarCount)

   def displayPulsar(self):
      print( "Name : ", self.name,  ", Distance: ", self.distance)

"This creates the first object"
pulsar1 = Pulsar("B1944+17", "979 Lightyears")
"This creates the second pulsar in the class"
pulsar2 = Pulsar("J2129-5721", "1305 Lightyears")
pulsar1.displayPulsar()
pulsar2.displayPulsar()
print( "Total Pulsars %d" % Pulsar.pulsarCount)

# New code
users_name = input('Your name: ')
distance = input('The distance: ')
pulsar1.name = users_name
pulsar1.distance = distance
# Then you can wrap this in a function if you want

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多