2012年9月13日木曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のVI部(クラスとオブジェクト指向プログラミング)のまとめ演習6(__bases__属性)を解いてみる。

その他参考書籍

6.

コード(TextWrangler)

sample.py

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

class Lister:
 def __repr__(self):
  return ("<Instance of %s(%s), address %s:\n%s>" %
    (self.__class__.__name__,
    self.superclasses(),
    id(self),
    self.attrnames()))
 
 def superclasses(self):
  result = ''
  bln = 0
  for superclass in self.__class__.__bases__:
   if bln:
    result = result + ', '
   bln = 1
   result = result + superclass.__name__
  return result
 
 def attrnames(self):
  result = ''
  for attr in self.__dict__.keys():
   if attr[:2] == '__':
    result = result + "\tname %s=<built-in>\n" %attr
   else:
    result = result + "\tname %s=%s\n" %(attr,self.__dict__[attr])
  return result

class Super:
 def __init__(self):
  self.data1 = 'spam'

class Sub(Super, Lister):
 def __init__(self):
  Super.__init__(self)
  self.data2 = 'eggs'
  self.data3 = 42

if __name__ == '__main__':
 X = Sub()
 print(X)

入出力結果(Terminal)

$ ./sample.py
<Instance of Sub(Super, Lister), address 4318206928:
 name data1=spam
 name data3=42
 name data2=eggs
>
$

0 コメント:

コメントを投稿