質問編集履歴
3
あ
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
多重継承のチェックでエラーが出てしまいます。
|
2
|
-
class ClassDesignDrawing:
|
3
|
-
class Class_2_Inheritance(ClassDesignDrawing)
|
4
|
-
|
5
|
-
よろしくお願いします
|
6
|
-
|
7
1
|
#エラー内容
|
8
2
|
|
9
3
|
```ここに言語を入力
|
@@ -20,22 +14,6 @@
|
|
20
14
|
order (MRO) for bases ClassDesignDrawing, Class_2_Inheritance
|
21
15
|
```
|
22
16
|
|
23
|
-
|
24
|
-
|
25
|
-
```ここに言語を入力
|
26
|
-
class ClassDesignDrawing: # クラスという 継承元の場合は親クラスという
|
27
|
-
def __init__(self,name): # コンストラクタという
|
28
|
-
self.name = name # self.nameはインスタンス変数。「インスタンス.変数名」で表示可能
|
29
|
-
|
30
|
-
def print_name(self): # クラスが持つ関数は メソッド
|
31
|
-
print('この設計図の車メーカーは{}です'.format(self.name))
|
32
|
-
|
33
|
-
def hello(self):
|
34
|
-
print ("Hello")
|
35
|
-
|
36
|
-
KG = 2580 # KGはクラス変数という「クラス名.変数名」で表し全インスタンスで共通変数
|
37
|
-
CM = 1748 # KGはクラス変数という「クラス名.変数名」で表し全インスタンスで共通変数
|
38
|
-
|
39
17
|
class Class_2_Inheritance(ClassDesignDrawing):# クラスは継承(Inheritance)が可能 継承先のこのクラスをサブクラスという
|
40
18
|
def __init__(self,name): # コンストラクタという
|
41
19
|
self.name = name # self.nameはインスタンス変数。「インスタンス.変数名」で表示可能
|
@@ -54,22 +32,4 @@
|
|
54
32
|
a.hello() # ClassDesignDrawing のメソッドも
|
55
33
|
a.world() # Class_2_Inheritance のメソッドも使用できる
|
56
34
|
|
57
|
-
|
58
|
-
afterproduction = ClassDesignDrawing('トヨタ') # インスタンス化(実体化)という
|
59
|
-
|
60
|
-
afterproduction.print_name() # print_name()メソッドをコールする
|
61
|
-
car_explain = "車体総重量は{}KGで長さは{}CMです。"#変数は{}で指定
|
62
|
-
print(car_explain.format(afterproduction.KG, afterproduction.CM))#format () に入れる引数は変数いずれも可能。
|
63
|
-
|
64
|
-
afterproduction.newname_brand = "lexus" # インスタンス変数は新しく追加できる
|
65
|
-
ClassDesignDrawing.CM = 3456 # クラス変数は変更できる
|
66
|
-
|
67
|
-
only_one_inheritance = Class_2_Inheritance('ニッサン') # 継承先の”クラス2だけ”をインスタンス化しても
|
68
|
-
only_one_inheritance.print_name() # 継承されているから元々のクラスのprint_name()メソッドもコールできる
|
69
|
-
|
70
|
-
afterproduction.hello() # 親クラスのhello()メソッドをコールしたからHelloが1回表示される
|
71
|
-
only_one_inheritance.world() # もちろんクラス2のworld()メソッドもコールできる
|
72
|
-
|
73
|
-
only_one_inheritance.hello() # 継承されている為サブクラスのhello()メソッドがコールされHELLOが2回憑依j
|
74
|
-
|
75
35
|
```
|
2
34
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,14 +2,6 @@
|
|
2
2
|
class ClassDesignDrawing:
|
3
3
|
class Class_2_Inheritance(ClassDesignDrawing)
|
4
4
|
|
5
|
-
という2つのクラスに対して以下のようにMyClassCという多重継承をさせたいです。
|
6
|
-
class MyClassC(ClassDesignDrawing('TATA'), Class_2_Inheritance('SUBARU')):
|
7
|
-
pass
|
8
|
-
|
9
|
-
a = MyClassC()
|
10
|
-
a.hello() # ClassDesignDrawing のメソッドも
|
11
|
-
a.world() # Class_2_Inheritance のメソッドも使用できる
|
12
|
-
|
13
5
|
よろしくお願いします
|
14
6
|
|
15
7
|
#エラー内容
|
1
ついき
title
CHANGED
File without changes
|
body
CHANGED
@@ -17,14 +17,15 @@
|
|
17
17
|
```ここに言語を入力
|
18
18
|
---------------------------------------------------------------------------
|
19
19
|
TypeError Traceback (most recent call last)
|
20
|
-
<ipython-input-
|
20
|
+
<ipython-input-5-b4a7c5c0a34c> in <module>()
|
21
|
-
34 print ("MyClassB:funcB")
|
22
|
-
|
21
|
+
23
|
22
|
+
24
|
23
|
-
--->
|
23
|
+
---> 25 class Class_3(ClassDesignDrawing, Class_2_Inheritance):
|
24
|
-
|
24
|
+
26 pass
|
25
|
-
|
25
|
+
27
|
26
26
|
|
27
|
-
TypeError:
|
27
|
+
TypeError: Cannot create a consistent method resolution
|
28
|
+
order (MRO) for bases ClassDesignDrawing, Class_2_Inheritance
|
28
29
|
```
|
29
30
|
|
30
31
|
|
@@ -39,33 +40,22 @@
|
|
39
40
|
|
40
41
|
def hello(self):
|
41
42
|
print ("Hello")
|
42
|
-
|
43
|
+
|
43
44
|
KG = 2580 # KGはクラス変数という「クラス名.変数名」で表し全インスタンスで共通変数
|
44
45
|
CM = 1748 # KGはクラス変数という「クラス名.変数名」で表し全インスタンスで共通変数
|
45
46
|
|
46
47
|
class Class_2_Inheritance(ClassDesignDrawing):# クラスは継承(Inheritance)が可能 継承先のこのクラスをサブクラスという
|
47
48
|
def __init__(self,name): # コンストラクタという
|
48
49
|
self.name = name # self.nameはインスタンス変数。「インスタンス.変数名」で表示可能
|
49
|
-
|
50
|
+
|
50
51
|
def world(self):
|
51
52
|
print ("World")
|
52
|
-
|
53
|
+
|
53
54
|
def hello(self): # サブクラスは親クラスのhello()メソッドをオーバーライドする事ができる
|
54
55
|
print("HELLO HELLO これサブクラス書換え!")# class ClassDesignDrawingの hello(self)をオーバーライドしている
|
55
|
-
|
56
56
|
|
57
|
-
#class MyClassC(ClassDesignDrawing, Class_2_Inheritance):
|
58
57
|
|
59
|
-
|
60
|
-
class MyClassA:
|
61
|
-
def funcA(self):
|
62
|
-
print ("MyClassA:funcA")
|
63
|
-
|
64
|
-
class MyClassB:
|
65
|
-
def funcB(self):
|
66
|
-
print ("MyClassB:funcB")
|
67
|
-
|
68
|
-
class
|
58
|
+
class Class_3(ClassDesignDrawing, Class_2_Inheritance):
|
69
59
|
pass
|
70
60
|
|
71
61
|
a = MyClassC()
|
@@ -85,10 +75,9 @@
|
|
85
75
|
only_one_inheritance = Class_2_Inheritance('ニッサン') # 継承先の”クラス2だけ”をインスタンス化しても
|
86
76
|
only_one_inheritance.print_name() # 継承されているから元々のクラスのprint_name()メソッドもコールできる
|
87
77
|
|
88
|
-
afterproduction.hello() # 親クラスのhello()メソッドをコールしたからHello
|
78
|
+
afterproduction.hello() # 親クラスのhello()メソッドをコールしたからHelloが1回表示される
|
89
79
|
only_one_inheritance.world() # もちろんクラス2のworld()メソッドもコールできる
|
90
80
|
|
91
|
-
only_one_inheritance.hello() # 継承されている
|
81
|
+
only_one_inheritance.hello() # 継承されている為サブクラスのhello()メソッドがコールされHELLOが2回憑依j
|
92
82
|
|
93
|
-
|
94
83
|
```
|