【发布时间】:2016-12-27 19:58:50
【问题描述】:
我正在尝试将我的程序转换为面向对象的样式。目前,我有一个 brandSelector() 函数,它接受查询输入并找到查询和品牌数组之间的交集。但是,我正在尝试将 brandSelector() 转换为通用 Selector() 或交集查找器。例如,我可以使用类型和查询 (Selector(type, query)) 调用。在这种情况下,您将键入 Selector(brand, query)。该附加参数定义检查哪个数组以及设置哪个变量——或者,一个 if 语句就足够了——但我不确定如何实现这样的系统。我将不胜感激任何解决方案或建议。谢谢,
brands = ["apple", "android", "windows"]
brand = None
def Main():
query = input("Enter your query: ").lower()
brand = brandSelector(query)
def brandSelector(query):
try:
brand = set(brands).intersection(query.split())
brand = ', '.join(brand)
#Check Condition After Setting
int_cond = confirmIntersection(brand)
if int_cond == False:
raise NameError("No Intersection")
return brand
except NameError:
print("\nNo Intersection found between query defined brand and brands array\n")
return brandDetectionFailure()
完整代码:https://github.com/KentCoding/phoneTroubleshooting/blob/master/phoneTroubleshooting.py Python版本:v3.5.2
我的尝试:
def Main():
init()
query = input("Enter your query: ").lower()
brand = Selector(brand, brands, query)
keywordSelection(query, brand)
def Selector(var, array, query):
try:
#Format Brands Query
var = set(array).intersection(query.split())
var = ', '.join(var)
#Check Condition After Setting
int_cond = confirmIntersection(var)
if int_cond == False:
raise NameError("No Intersection")
return var
except NameError:
print("\nNo Intersection found between query defined brand and brands array\n")
return brandDetectionFailure()
但是给出了错误:
UnboundLocalError: local variable 'brand' referenced before assignment
【问题讨论】:
-
该错误是因为
brand = Selector(brand, brands, query)语句在定义之前尝试通过将brand作为参数传递给Selector()函数来使用它。 -
当然,这不会是一个问题,因为我用
brands = ["apple", "android", "windows"] brand = None将它定义为一个全局但是,如果这不起作用,我该如何解决它?感谢您的帮助 -
传奇 - 谢谢! :-) 如果您将其作为答案,如果您想要代表点数,我很乐意给它打勾。
标签: python function oop parameters