私のプログラムをオブジェクト指向スタイルに変換しようとしています。現在、私はquerySelector()関数を使用してクエリ入力を受け取り、クエリとブランド配列の間の交差点を見つけます。しかし、私はbrandSelector()を汎用Selector()またはintersection finderに変換しようとしています。たとえば、型とクエリ(Selector(type、query))を呼び出すことができます。この場合、Selector(ブランド、クエリ)と入力します。この追加のパラメータは、どの配列がチェックされ、どの変数が設定されているかを定義します - 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) 'というステートメントは、定義前に' Selector() '関数の引数として渡すことで' brand'を使用しようとしているからです。 – martineau
確かに、私は 'brand = [" apple "、" android "、" windows "] brand = None'でグローバルとして定義しているので、問題はありません。修理する?あなたの助けをありがとう –
伝説 - ありがとう! :-)あなたが答えとしてそれを置くならば、あなたはrepポイントを望むなら、それにティックを与えることをうれしく思う。 –