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

回答編集履歴

5

追記

2017/11/17 06:28

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -63,19 +63,19 @@
63
63
  print('チワワの特技は' + self.skill)
64
64
 
65
65
  def main():
66
- print(my_dir(object))
66
+ print(my_dir(object()))
67
- print(my_dir(Creature))
67
+ print(my_dir(Creature()))
68
- print(my_dir(Dog))
68
+ print(my_dir(Dog()))
69
- print(my_dir(Chihuahua))
69
+ print(my_dir(Chihuahua()))
70
70
 
71
71
  if __name__ == '__main__':
72
72
  main()
73
73
 
74
74
  """実行結果
75
75
  []
76
- ['printAttr']
77
- ['printAttr', 'printHave']
76
+ ['attr', 'printAttr']
77
+ ['have', 'printAttr', 'printHave']
78
- ['printAttr', 'printHave', 'printSkill']
78
+ ['printAttr', 'printHave', 'printSkill', 'skill']
79
79
  """
80
80
  ```
81
81
 

4

追記

2017/11/17 06:28

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -38,4 +38,46 @@
38
38
  ```
39
39
 
40
40
  ---
41
+ **ちょっとした実験コード**
42
+ ```Python
43
+ def my_dir(instance):
44
+ """プライベートでないdir"""
45
+ return [elem for elem in dir(instance) if elem[:2] != '__']
46
+
47
+ class Creature(object):
48
+ def __init__(self):
49
+ self.attr = '食事する'
50
+ def printAttr(self):
51
+ print('生物は' + self.attr)
52
+
53
+ class Dog(Creature):
54
+ def __init__(self):
55
+ self.have = '尻尾'
56
+ def printHave(self):
57
+ print('犬には' + self.have + 'がある')
58
+
59
+ class Chihuahua(Dog):
60
+ def __init__(self):
61
+ self.skill = 'お座り'
62
+ def printSkill(self):
63
+ print('チワワの特技は' + self.skill)
64
+
65
+ def main():
66
+ print(my_dir(object))
67
+ print(my_dir(Creature))
68
+ print(my_dir(Dog))
69
+ print(my_dir(Chihuahua))
70
+
71
+ if __name__ == '__main__':
72
+ main()
73
+
74
+ """実行結果
75
+ []
76
+ ['printAttr']
77
+ ['printAttr', 'printHave']
78
+ ['printAttr', 'printHave', 'printSkill']
79
+ """
80
+ ```
81
+
82
+ ---
41
83
  課題2に関しては、問題設定がちょっとよくわかりません。

3

修正

2017/11/17 06:24

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  このような場合、親クラスの`__init__`メソッドを明示的に呼び出さねばいけません。
2
- インスタンス変数継承されないからです。
2
+ インスタンス変数継承されていないから(というか定義されていないから)です。
3
3
  ```Python
4
4
  class Creature(object):
5
5
  def __init__(self):

2

追記

2017/11/17 06:10

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,4 +1,5 @@
1
1
  このような場合、親クラスの`__init__`メソッドを明示的に呼び出さねばいけません。
2
+ インスタンス変数は継承されないからです。
2
3
  ```Python
3
4
  class Creature(object):
4
5
  def __init__(self):
@@ -34,4 +35,7 @@
34
35
  犬には尻尾がある
35
36
  生物は食事する
36
37
  """
37
- ```
38
+ ```
39
+
40
+ ---
41
+ 課題2に関しては、問題設定がちょっとよくわかりません。

1

修正

2017/11/17 06:08

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,4 +1,4 @@
1
- Pythonでは、親クラスの`__init__`メソッドを明示的に呼び出さねばいけません。
1
+ このような場合、親クラスの`__init__`メソッドを明示的に呼び出さねばいけません。
2
2
  ```Python
3
3
  class Creature(object):
4
4
  def __init__(self):