def get_names(self): """このシンタックスインスタンスでアクセスできる ビット列プロパティの一覧を返す""" result = [] for mnemonic in self._mnemonics: name = mnemonic.name if isinstance(mnemonic, case_table): if mnemonic.condition(self): result.extend(mnemonic.cls(self).get_names()) else: result.append(name) return result
def get_names(self): """このシンタックスインスタンスでアクセスできる ビット列プロパティの一覧を返す""" result = [] for mnemonic in self._mnemonics: name = mnemonic.name if isinstance(mnemonic, case_table): if mnemonic.condition(self): result.extend(mnemonic.cls(self).get_names()) else: result.append(name) return result
def __getattr__(self, name): """指定されたプロパティが直下から見つからない場合に、 条件に合うifシンタックスを順番に探していく""" for mnemonic in self._conditions: try: if mnemonic.condition(self): sub = getattr(self, mnemonic.name) return getattr(sub, name) except AttributeError: pass # 親が与えられている場合は親のプロパティも参照する if (self._parent and any(mnemonic.name == name for mnemonic in self._parent._mnemonics)): return getattr(self._parent, name)
def __getattr__(self, name): """指定されたプロパティが直下から見つからない場合に、 条件に合うifシンタックスを順番に探していく""" for mnemonic in self._conditions: try: if mnemonic.condition(self): sub = getattr(self, mnemonic.name) return getattr(sub, name) except AttributeError: pass # 親が与えられている場合は親のプロパティも参照する if ( self._parent and any(mnemonic.name == name for mnemonic in self._parent._mnemonics) ): return getattr(self._parent, name)