2014年4月18日金曜日

開発環境

Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART Ⅵ.(Classes and OOP)、CHAPTER 27(Class Coding Basics)、Test Your Knowledge: Quiz.1.~9.を解いてみる。

その他参考書籍

Test Your Knowledge: Quiz.1.~9.

コード(BBEdit)

sample.py

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

# tow key concepts
# __init__, self

class A:
    x = 5                       # class attribute

    def __init__(self):         # 最もよく使われるオーバーロード(constructor)
        print('Hello, instance!')
    def func(self):             # selfはインスタンス自身を指す
        print(self)

    # +演算子をオーバーロード
    # (本来はbuilt-in objectのように自然な演算を導入したい時に利用)
    def __add__(self, other):
        print('Hello, +!({})'.format(other))

A.y = 10                        # class attribute

i1 = A()
i2 = A()

i1.z = 15                       #  instance attribute

print(i1.x, i1.y)

print(i2.x, i2.y)
try:
    print(i2.z)
except Exception as err:
    print(type(err), err, err.args)

try:
    A.func()
except Exception as err:
    print(type(err), err, err.args)

i1.func()
i2.func()
A.func(i1)
A.func(i2)

i1 + 10
i1 + 'python'
i1 + i2
i1 + A

入出力結果(Terminal)

$ ./sample.py
Hello, instance!
Hello, instance!
5 10
5 10
<class 'AttributeError'> 'A' object has no attribute 'z' ("'A' object has no attribute 'z'",)
<class 'TypeError'> func() missing 1 required positional argument: 'self' ("func() missing 1 required positional argument: 'self'",)
<__main__.A object at 0x10540fbd0>
<__main__.A object at 0x10540fcd0>
<__main__.A object at 0x10540fbd0>
<__main__.A object at 0x10540fcd0>
Hello, +!(10)
Hello, +!(python)
Hello, +!(<__main__.A object at 0x10540fcd0>)
Hello, +!(<class '__main__.A'>)
$

0 コメント:

コメントを投稿