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

質問編集履歴

3

2019/07/20 19:40

投稿

退会済みユーザー
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

2019/07/20 19:40

投稿

退会済みユーザー
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

ついき

2019/07/20 17:29

投稿

退会済みユーザー
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-55-d224971e69ba> in <module>()
20
+ <ipython-input-5-b4a7c5c0a34c> in <module>()
21
- 34 print ("MyClassB:funcB")
22
- 35
21
+ 23
22
+ 24
23
- ---> 36 class MyClassC(ClassDesignDrawing('TATA'), Class_2_Inheritance('SUBARU')):
23
+ ---> 25 class Class_3(ClassDesignDrawing, Class_2_Inheritance):
24
- 37 pass
24
+ 26 pass
25
- 38
25
+ 27
26
26
 
27
- TypeError: __init__() takes 2 positional arguments but 4 were given
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 MyClassC(ClassDesignDrawing('TATA'), Class_2_Inheritance('SUBARU')):
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()メソッドをコールしたからHello1回
78
+ afterproduction.hello() # 親クラスのhello()メソッドをコールしたからHello1回表示される
89
79
  only_one_inheritance.world() # もちろんクラス2のworld()メソッドもコールできる
90
80
 
91
- only_one_inheritance.hello() # 継承されているからサブクラスのhello()メソッドコールできる。HELLO2
81
+ only_one_inheritance.hello() # 継承されているサブクラスのhello()メソッドコールされHELLOが2憑依j
92
82
 
93
-
94
83
  ```