[過去ログ]
【まず1嫁】くだすれPython(超初心者用) その53 (1002レス)
【まず1嫁】くだすれPython(超初心者用) その53 http://mevius.5ch.net/test/read.cgi/tech/1615846784/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
605: デフォルトの名無しさん [] 2021/05/12(水) 00:31:29.50 ID:p52W3PYV デストラクタの挙動がよくわかりません。 以下のコードを実行すると #!/usr/bin/env python3 class Gnuplot: import PyGnuplot as pgp def __del__(self): del self.pgp if __name__ == "__main__": gp = Gnuplot() del gp ------------------ デストラクタの箇所で del self.pgp AttributeError: pgp と属性エラーが出るのですがなにが悪いのかわかりません。 http://mevius.5ch.net/test/read.cgi/tech/1615846784/605
606: デフォルトの名無しさん [] 2021/05/12(水) 00:45:07.28 ID:p52W3PYV もしかして、クラス変数だからdelできない? http://mevius.5ch.net/test/read.cgi/tech/1615846784/606
613: デフォルトの名無しさん [] 2021/05/12(水) 21:55:38.61 ID:p52W3PYV >>610, 611 削除できました。ただ、クラス変数をデストラクタで削除してしまうと 次回インスタンス宣言するときに必要なクラス変数が存在しないことに なってしまってひどいバグの温床になることがわかりました。 確かに明示的に削除する必要はないですね。 >>612 モジュールインポートでグローバルな名前空間が汚れるのが嫌なので クラスのスコープにいれて初期化子とデストラクタでモジュールのロードと 破壊を自動化しようとしているんです。 別に文頭でモジュールのインポートの宣言をしなければいけないという わけではないのでは。 http://mevius.5ch.net/test/read.cgi/tech/1615846784/613
615: デフォルトの名無しさん [] 2021/05/12(水) 22:18:22.84 ID:p52W3PYV モジュールをクラス変数ではなくインスタンス変数として束縛したいのですが できません。 -------- #!/usr/bin/env python3 class Gnuplot: def __init__(self): import PyGnuplot as pgp pass def cmd(self,commands): self.pgp.c(commands) pass if __name__ == "__main__": agp = Gnuplot() agp.cmd("plot sin(x)") を実行すると、 AttributeError: 'Gnuplot' object has no attribute 'pgp' と出ます。 __init__の中でPyGnuplot をインポートしてインスタンス変数self.pgp に束縛したつもりなんですが、どうもそれがうまくいかないみたいなんです。 モジュール変数はクラス変数にしか束縛できないんでしょうか。。 http://mevius.5ch.net/test/read.cgi/tech/1615846784/615
617: デフォルトの名無しさん [] 2021/05/12(水) 22:47:49.00 ID:p52W3PYV >>616 なーるほど。盲点でした。 おかげさまでうまくいきました。 http://mevius.5ch.net/test/read.cgi/tech/1615846784/617
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.040s