【问题标题】:Trouble working with and updating dictionary using a class and function in Python 3 [Newbie]在 Python 3 中使用类和函数使用和更新字典时遇到问题 [新手]
【发布时间】:2018-07-26 12:33:23
【问题描述】:

我对编码有点陌生。在过去一年左右的时间里,我一直在自学。我正在尝试建立一个更坚实的基础并尝试创建非常简单的程序。我创建了一个类,并试图将“宠物”添加到可以容纳多个“宠物”的字典中。我已经尝试以多种不同的方式更改代码,但没有任何效果。这是我目前所拥有的。

# Created class
class Animal:

# Class Attribute
classes = 'mammal'
breed = 'breed'

# Initializer/Instance Attribrutes
def __init__ (self, species, name, breed):
    self.species = species
    self.name = name
    self.breed = breed

# To get different/multiple user input
@classmethod
def from_input(cls):
    return cls(
            input('Species: '),
            input('Name: '),
            input('Breed: ')
            )

# Dictionary
pets = {}

# Function to add pet to dictionary
def createpet():
    for _ in range(10):
        pets.update = Animal.from_input()
        if pets.name in pets:
            raise ValueError('duplicate ID')

# Calling the function
createpet()

我尝试将其更改为列表并使用“追加”工具,但没有成功。我确信这段代码有很多问题,但我什至不知道该怎么做。我已经研究了“收藏”模块,但不能很好地理解它是否有帮助。我正在寻找的是我可以在哪里运行“createpet()”函数,并且每次都添加一个带有物种、名称和品种的新宠物。我研究了 sqlite3,想知道这是否是一个更好的选择。如果是这样,我该去哪里学习和更好地理解该模块(又名好的初学者教程)。任何帮助,将不胜感激。谢谢!

【问题讨论】:

    标签: python-3.x function class dictionary methods


    【解决方案1】:

    (首先,您必须在将其添加到字典之前检查重复项。)
    您将项目添加到字典x 的方式是

    x[y] = z
    

    这会将键 y 的值设置为等于 z,或者,如果没有具有该名称的键,则使用值 z 创建一个新键 y
    更新代码:
    (我将其定义为类方法,因为from_input 方法也是其中之一,据我了解,这将在继承类时保持工作,有关更多信息,您可能想查看this

    @classmethod
    def createpet(cls):
        pet = cls.from_input()
        if pet.name in cls.pets:
            raise ValueError("duplicate ID")
        else:
            cls.pets[pet.name] = pet
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多