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
我做错了什么?
答案 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]
当然,有一些方法可以读取和修改受双重下划线保护的对象,但该访问不会是偶然的。