teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

名前空間を分けたいことの追加

2021/01/23 14:41

投稿

nono1234
nono1234

スコア25

title CHANGED
File without changes
body CHANGED
@@ -22,6 +22,8 @@
22
22
 
23
23
  このelse部分をなんとかすることで,その変数名が定義されていない場合,外部から代入することができるが,既に定義されている場合,再代入を禁止するような~~Javaでいうfinalみたいな~~ものを作りたいのです.(追記:Javaのfinal演算子の挙動を勘違いしていたかもしれないので,打消し線を入れておきます)
24
24
 
25
+ (追記:また,参考サイトの冒頭にあるコードでも,所望の動作はするのですが,名前空間をわけることができないため,複数そのようなクラスをつくるというようなことができません.)
26
+
25
27
  self.__dict__[name]=value
26
28
  としようかと思ったのですが
27
29
  この__dict__はmappingproxyですので,

1

やりたいことは

2021/01/23 14:41

投稿

nono1234
nono1234

スコア25

title CHANGED
File without changes
body CHANGED
@@ -20,11 +20,14 @@
20
20
  ただし,不完全なところがありConstMetaのelse節内部のself.__setattr__(name,value)で必ずTypeError: expected 2 arguments, got 1
21
21
  が表示されてしまいます.(Constとしての機能は果しています)
22
22
 
23
- このelse部分をなんとかすることで,外部から代入することができるが,再代入を禁止するようなJavaでいうfinalみたいなものを作りたいのです.
23
+ このelse部分をなんとかすることで,その変数名が定義されていない場合,外部から代入することができるが,既に定義されている場合,再代入を禁止するような~~Javaでいうfinalみたいな~~ものを作りたいのです.(追記:Javaのfinal演算子の挙動を勘違いしていたかもしれないので,打消し線を入れておきます)
24
24
 
25
25
  self.__dict__[name]=value
26
26
  としようかと思ったのですが
27
27
  この__dict__はmappingproxyですので,
28
28
  TypeError: 'mappingproxy' object does not support item assignment
29
29
  となります.
30
- なにか良い知恵,代替手段のようなものはないでしょうか?
30
+ なにか良い知恵,代替手段のようなものはないでしょうか?
31
+
32
+ やりたいこと
33
+ その変数名が定義されていない場合,外部から代入することができるが,既に定義されている場合,再代入を禁止するようなメタクラスの実装