在类的代码中预先填充实例(Python)

时间:2016-06-28 22:27:46

标签: python class

我正在尝试这样做,以便当我可以运行一个函数来填充一个包含在代码中的几个实例的类。

class Pets(object):

  def __init__(self, name, scientific_name, feet_number, type)
    super(Pets,self).__init__()
    self.name = name
    self.scientific_name = scientific_name
    self.feet_number = feet_number
    self.type = type

这是我被卡住的地方。 我想创建一个具有实例列表的函数(例如,狗,猫,马......),以便在运行该函数时可以立即访问这些实例。

我从Creating dynamically named variables from user input(第二段,第一句)这样的地方知道,我所要求的是可能的,我只是不知道它的语法。

1 个答案:

答案 0 :(得分:0)

这是你想要做的吗?

class Pet(object):
  def __init__(self, details):
    self.name = details[0]
    self.scientific_name = details[1]
    self.feet_number = details[2]
    self.type = details[3]

if __name__ == '__main__':
    pet_list = [('Cat', 'Kitty Cat', 4, 'Cuddly'), ('Dog', 'Puppy Wuppy', 3, 'Licky')]
    pets = [Pet(item) for item in pet_list]

这给了你:

pets
> [<__main__.Pet at 0x8134d30>, <__main__.Pet at 0x8134d68>]

pets[0]
> <__main__.Pet at 0x8134d30>

pets[0].name
> 'Cat'

pets[0].scientific_name
> 'Kitty Cat'

pets[1].name
> 'Dog'

根据你想做什么,有很多方法可以放在一起。例如,您可以创建一个名为Pet()的主类,其中包含一些适用于所有宠物的基本属性和方法,然后为每个继承基类的宠物创建特定的类,例如: class Cat(Pet):

或者你可以让Pet类能够知道所有其他细节,具体取决于传递给name的内容,然后相应地填充实例变量。