2014年5月7日水曜日

開発環境

Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART Ⅵ.(Classes and OOP)、CHAPTER 32(Advanced Class Topics)、Test Your Knowledge: Part VI Exercises 4.(Attribute methods)を解いてみる。

その他参考書籍

4.(Attribute methods)

コード(BBEdit)

sample.py

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

class Attrs:
    def __getattr__(self, name):
        print(name)
    def __setattr__(self, name, value):
        print(name, value)

if __name__ == '__main__':
    def p(err):
        print(type(err), err, err.args)
        
    a = Attrs()
    a.attr1 = 10
    a.attr1
    a.attr2 = [1,2]
    a.attr2

    b = Attrs()
    try:
        a + b
    except Exception as err:
        p(err)
    try:
        a + 1
    except Exception as err:
        p(err)
    try:
        a[0]
    except Exception as err:
        p(err)
    try:
        a[:]
    except Exception as err:
        print(err)

入出力結果(Terminal)

$ ./sample.py
attr1 10
attr1
attr2 [1, 2]
attr2
<class 'TypeError'> unsupported operand type(s) for +: 'Attrs' and 'Attrs' ("unsupported operand type(s) for +: 'Attrs' and 'Attrs'",)
<class 'TypeError'> unsupported operand type(s) for +: 'Attrs' and 'int' ("unsupported operand type(s) for +: 'Attrs' and 'int'",)
<class 'TypeError'> 'Attrs' object does not support indexing ("'Attrs' object does not support indexing",)
'Attrs' object is not subscriptable
$

0 コメント:

コメントを投稿