是否可以从类中的用户输入中追加?

问题描述 投票:-2回答: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)

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

python python-3.x class append
2个回答
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)

0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.