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

回答編集履歴

1

追加

2021/07/30 12:22

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -9,4 +9,59 @@
9
9
  c=child()
10
10
  c.pri() #この値は1にしたいのですか、2にしたいのですか?
11
11
  print(c.a) #この値を1にしたいのですか、2にしたいのですか?
12
+ ```
13
+
14
+ 2にしたいのですね。
15
+
16
+ 出来るか出来ないかというと出来ますが、クラスの使い方として普通はそういうことをやらないようにするでしょう。
17
+
18
+ お勧めでない方法
19
+
20
+ ```python
21
+ >>> class parent():
22
+ ... def __init__(self,a=None):
23
+ ... parent.a=a
24
+ ...
25
+ >>> class child(parent):
26
+ ... def __init__(self):
27
+ ... pass
28
+ ... def pri(self):
29
+ ... print(self.a)
30
+ ...
31
+ >>> p1=parent(1)
32
+ >>> print(p1.a) #1
33
+ 1
34
+ >>> p2=parent(2)
35
+ >>> print(p2.a) #2
36
+ 2
37
+ >>> c=child()
38
+ >>> c.pri() #この値は1にしたいのですか、2にしたいのですか?
39
+ 2
40
+ >>> print(c.a) #この値を1にしたいのですか、2にしたいのですか?
41
+ 2
42
+ ```
43
+
44
+ 普通やる方法
45
+
46
+ ```python
47
+ >>> class parent():
48
+ ... @classmethod
49
+ ... def set_a(self,a):
50
+ ... parent.a=a
51
+ ...
52
+ >>> class child(parent):
53
+ ... def pri(self):
54
+ ... print(self.a)
55
+ ...
56
+ >>> parent.set_a(1)
57
+ >>> print(parent.a) #1
58
+ 1
59
+ >>> parent.set_a(2)
60
+ >>> print(parent.a) #2
61
+ 2
62
+ >>> c=child()
63
+ >>> c.pri() #この値は1にしたいのですか、2にしたいのですか?
64
+ 2
65
+ >>> print(c.a) #この値を1にしたいのですか、2にしたいのですか?
66
+ 2
12
67
  ```