開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART Ⅵ.(Classes and OOP)、CHAPTER 28(A More Realistic Example)、Test Your Knowledge: Quiz.1.~9.を解いてみる。
その他参考書籍
Test Your Knowledge: Quiz.1.~9.
- AttrDisplay class
- shelveモジュールにインスタンスを保存するとき、自動的にインスタンスのクラス等も記録する。
- 将来にわたるメンテナンスのため。(変更、修正箇所が一カ所で済む。)
- super classの修正がsub classにも反映されるから、将来の変更、修正箇所等がより少なく、容易になったり、コードが少なくて済む。
- super classの変更がsub classにも反映されるから、書来の変更、修正箇所等が少なくて済む。
- 属性を追加、削除するたびに、その属性のためのコードを追加削除しなくていいから。
- いろいろなパーツを組み合わせる場合とかには継承よりもコンポジションを使った方がいい場合もある。
-
コード(BBEdit)
person.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- from classtools import AttrDisplay class Person(AttrDisplay): def __init__(self, name, jobs=[], address=None, state=None): self.name = name self.jobs = jobs def __str__(self): return '[{0}: jobs={1}, name={2} {3}]'.format( self.__class__.__name__, self.jobs, self.name['first'], self.name['last']) if __name__ == '__main__': person = Person({'first':'first1', 'last':'last1'}, ['programmer', 'designer']) print(person) print(repr(person))
入出力結果(Terminal)
$ ./person.py [Person: jobs=['programmer', 'designer'], name=first1 last1] [Person: jobs=['programmer', 'designer'], name={'first': 'first1', 'last': 'last1'}] $
-
コード(BBEdit)
person.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- from classtools import AttrDisplay class Person(AttrDisplay): def __init__(self, name, jobs=[], address=None, state=None): self.name = name self.jobs = jobs # personal contacts database self.address = address self.state = state def __str__(self): return '[{0}: jobs={1}, name={2} {3}]'.format( self.__class__.__name__, self.jobs, self.name['first'], self.name['last']) if __name__ == '__main__': person1 = Person({'first':'first1', 'last':'last1'}, ['programmer', 'designer']) person2 = Person({'first':'first2', 'last':'last2'}, address=12345) for person in (person1, person2): print(person) print(repr(person))
入出力結果(Terminal)
$ ./person.py [Person: jobs=['programmer', 'designer'], name=first1 last1] [Person: address=None, jobs=['programmer', 'designer'], name={'first': 'first1', 'last': 'last1'}, state=None] [Person: jobs=[], name=first2 last2] [Person: address=12345, jobs=[], name={'first': 'first2', 'last': 'last2'}, state=None] $
0 コメント:
コメントを投稿