開発環境
- 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 32(Advanced Class Topics)、Test Your Knowledge: Part VI Exercises 2.(Operator overloading)を解いてみる。
その他参考書籍
2.(Operator overloading)
コード(BBEdit)
sample.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- class MyList: def __init__(self, data=[]): self.data = list(data) def __add__(self, other): if isinstance(other, MyList): other = other.data return MyList(self.data + other) def __radd__(self, other): return MyList(other + self.data) def __getitem__(self, i): return self.data[i] def append(self, other): self.data.append(other) def sort(self,key=None, reverse=False): self.data.sort(key=key, reverse=reverse) def __getattr__(self, name): return getattr(self.data, name) def __repr__(self): return 'MyList: {0}'.format(self.data) if __name__ == '__main__': o1 = MyList([1,2,3,4,5]) o2 = MyList([6, 7]) l = [10, 100] print(o1 + o2) print(o2 + o1) print(o1 + l) print(l + o1) print(o1[2]) print(o1[:]) o1 += [1000] print(o1) o1.append(50) print(o1) o1.sort() print(o1) print(o1.pop()) print(o1) for x in o1: print(x) s = MyList('python') print(s)
入出力結果(Terminal)
$ ./sample.py MyList: [1, 2, 3, 4, 5, 6, 7] MyList: [6, 7, 1, 2, 3, 4, 5] MyList: [1, 2, 3, 4, 5, 10, 100] MyList: [10, 100, 1, 2, 3, 4, 5] 3 [1, 2, 3, 4, 5] MyList: [1, 2, 3, 4, 5, 1000] MyList: [1, 2, 3, 4, 5, 1000, 50] MyList: [1, 2, 3, 4, 5, 50, 1000] 1000 MyList: [1, 2, 3, 4, 5, 50] 1 2 3 4 5 50 MyList: ['p', 'y', 't', 'h', 'o', 'n'] $
0 コメント:
コメントを投稿