私は音声認識システムを構築しており、そのためにコマンド用のインタフェースを構築しています。彼らは主題、動詞、形容詞、ワイルドカードで構成されています。私はそれをこのように実装:私はICommandの継承二つのクラスだがPythonの奇妙な振る舞い継承したクラスのリスト
class IWord(object):
strings = []
def recognize(self, word):
return word in self.strings
def add_synonym(self, word):
self.strings.append(word)
class Verb(IWord):
def __init__(self, words):
for word in words:
self.add_synonym(word)
class Adjective(IWord):
def __init__(self, words):
for word in words:
self.add_synonym(word)
class Object(IWord):
def __init__(self, words):
for word in words:
self.add_synonym(word)
class WildCard(IWord):
def recognize(self, word):
return word is not None & word
class ICommand(object):
words = []
parameters = []
は:
class Command1(ICommand):
def __init__(self):
self.words.append(Verb(['do']))
self.words.append(Object(['some']))
self.words.append(WildCard())
class Command1(ICommand):
def __init__(self):
self.words.append(Verb(['lorem']))
を、私はこの部分をデバッグしていた場合:
for command in self.Commands:
if command.recognize(text):
return command
command.wordsが含まれているように思えます'do'、 'some'、ワイルドカード、 'lorem'。私は何がそこに間違っていたかは分かりません。
ひどいところがクラスバインド変数の継承なので、ひどくPythonで実装されていますか? – Curunir
@クルニール私はそう言っていないでしょう。たとえば、 Javaの 'ICommand'クラスの静的リスト words = new ArrayList ()を定義します。これは同じように動作します。 –