我有一个程序用数据读入文件,然后将数据转换为对象列表。 用户可以选择基于姓名,年龄,种类或性别在列表中搜索。 对于所有四种搜索方法,搜索功能的工作方式完全相同,只是属性是更改。
我想对所有四个属性使用相同的方法,只需根据用户选择更改属性。
# -*- coding: UTF-8 -*-
from Animal import Animal
from searchName import searchName
from searchAge import searchAge
from searchSpecies import searchSpecies
from searchGender import searchGender
def search():
print ("Search for: \n 1. Name \n 2. Age \n 3. Species \n 4. Gender \n")
searchFor = int(input("Answer with number: "))
if searchFor == 1:
searchF = input("Name? ")
searchName(fullset, searchF)
elif searchFor == 2:
searchF = int(input("Age? "))
searchAge(fullset, searchF)
elif searchFor == 3:
searchF = input("Spe? ")
searchSpecies(fullset, searchF)
elif searchFor == 4:
searchF = input("Gender? ")
searchGender(fullset, searchF)
else:
print ("Invalid input")
如果用户选择1,则调用searchName方法:
def searchName(fullset, searchF):
returnVal = print("No match")
i = 0
for djur in fullset:
if fullset[i].name == searchF:
returnVal = print ("Match: ", fullset[i])
break
else:
i += 1
return(returnVal)
如何编写搜索方法,以便fullset[i].name
可以轻松更改为.age
,.species
,.gender
?
答案 0 :(得分:0)
您可以使用var array = [true, false]
var new_array = array.map(function(item) {
return false;
});
console.log(array)
console.log(new_array)
方法,该方法按字符串名称检索属性。
getattr
所以你的搜索方法就像:
getattr(obj, 'attribute_name', default_value)