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

回答編集履歴

1

追記

2018/07/22 10:40

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,3 +1,10 @@
1
+ 同じリストにいろんなクラスのインスタンスを放り込むと非常に扱いにくいです。
2
+ **設計自体を見直した方が良いでしょう。**
3
+
4
+ いちおう、現状のまま解決する方法もご紹介します。
5
+
6
+ 型により分岐する方法
7
+ ---
1
8
  組み込み関数 [isinstance](https://docs.python.jp/3/library/functions.html#isinstance) で分岐すれば可能です。
2
9
  ```Python
3
10
  # classes.py
@@ -36,5 +43,38 @@
36
43
  Saturday
37
44
  ```
38
45
 
39
- ですが、そもそも同じリストいろんなクスのンスタンスを放り込むと非常に扱いにくいで
46
+ メソッドを適切オーバーライる方法
47
+ ---
40
- **設計自体を見直した方が良いでょう。**
48
+ > strメソッドの方が優先(?)されてまい
49
+
50
+ あるいは、`__str__`メソッドを自前で定義しても良いでしょう。
51
+ ```Python
52
+ class sub:
53
+ def getNumber(self):
54
+ return 42
55
+
56
+ def __str__(self):
57
+ return str(
58
+ self.getNumber()
59
+ )
60
+ ```
61
+
62
+ ```Python
63
+ import classes
64
+
65
+ ary = [
66
+ ['', '', '', '', '', '', ''],
67
+ ['', '', '', '', '', '', ''],
68
+ ['', '', '', classes.sub(), '', '', ''],
69
+ ['Friday', '', '', '', '', '', ''],
70
+ ['Saturday', '', '', '', '', '', '']
71
+ ]
72
+
73
+ for row in ary:
74
+ for elem in row:
75
+ print(elem, end=' ')
76
+
77
+ print()
78
+ ```
79
+
80
+ [Wandbox](https://wandbox.org/permlink/C5Em3FEu93wHhY8R)