我可以将字典键传递给方法并返回值吗?

时间:2017-06-23 20:04:36

标签: python dictionary

dogList = {
    "Shepard" : "Loki"
    "Lab" : "Odin"
    "Shitzu" : "Paul"}

拿上面的python字典。我想设置一个方法,我传递KEY并让方法返回与之关联的VALUE。但是我想确保无法修改字典,所以我一直在尝试使用@property标记。这基本上就是我想要运行的东西:

@property
def DogList(self, breed = "Shitzu") #Setting up one a default
    return dogList[breed]

现在我正在运行以测试该方法:

doggos = Dog() #class that contains the list
doggos.DogList("Shitzu")

当我运行时,我收到以下错误:

TypeError: 'str' object is not callable

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您有几种选择:

  • 给你的词典的方法副本(了解大词典),例如:

    dog_list = {...}
    dog_list_copy = dict(dog_list)

  • 使用具有私有字段的类,并仅公开方法,例如:

    class Abc:
    
        ___dogs_list = {...}
    
        def get_name(self, breed = 'Shitzu'):
            return self.__dogs_list[breed]
    

当然,有一些方法可以读取和修改受双重下划线保护的对象,但该访问不会是偶然的。