クラスインスタンスの属性名前空間をメソッドにインポートする方法はありますか?メソッドへのインスタンス名前空間のインポート
また、インスタンスの属性名前空間に直接出力することはできますか?
例えば、コードのこの単純なブロックを考えてみます。name
が認識されないため
class Name():
def __init__(self,name='Joe'):
self.name = name
def mangle_name(self):
# Magical python command like 'import self' goes here (I guess)
self.name = name + '123' # As expected, error here as 'name' is not defined
a_name = Name()
a_name.mangle_name()
print(a_name.name)
は、このコードブロックは失敗します。私が達成したいのは、メソッドmangle_name
がの属性名前空間を検索してname
を探し出す(したがって、例では'Joe'
を見つけることです)。
>>> Joe123
私はこれはおそらく悪い習慣であることを理解し、しかし、いくつかの状況で、それはなるだろう。そこにはエラーがないであろうと、出力がされるようself
の属性の名前空間をインポートするようないくつかのコマンドは、そこにありますコード全体の中で何かを参照するヒープがなくても、コードはかなり明確になります。self.
これが「恐ろしい、そして決してすべきではない」練習であれば、理由を説明してください。質問の後半部分に関して
、私は何をしたいです:
このコードは出力を返しますclass Name():
def __init__(self,name='Joe'):
self.name = name
def mangle_name(self):
# Magical python command like 'import self' goes here (I guess)
name = name + '123' # This line is different
a_name = Name()
a_name.mangle_name()
print(a_name.name)
:
>>> Joe123
モジュールはない返すimport self
コマンドをしようエラーが見つかりました。
私はPython 3.5を使用しているため、Python 3.5互換の答えが好まれます。
編集:分かりやすくするために。
はいわかりました。私の質問は、例の行が有効なコードと見なされるように、インスタンスの名前空間をインポートすることです。 – Charlie
あなたは自己をインポートする必要はありません。コードを変更すると、コードは正常に実行されます。あなたのクラス関数はすでにクラス属性にアクセスできます。 –
この質問は、インスタンスを可能な限り単純にする方法ではなく、インスタンスの属性名前空間をインポートする方法についての質問です。場合によっては、コード全体を参照するヒープがなくてもコードをより明確にすることができます。 – Charlie