HOME | Python | ���� |
¾�θ���Ǥϥ�åɤ��������Ȥ������������ˤ���Ȥ�����ˡ�ϼ������Ƥ��餺�� this �ʤɤ�ͽ����Ȥäƥ�����ɽ���Τ�����Ū�Ǥ��� Python ���������ȼ���ή����ȤäƤ��ޤ��� �����������Τ��Ȥ��������������Ȥϸ�������ޤ���Ǥ����� �ɤΥ����Ȥ�����Ϸ�ޤꤴ�Ȥ��ǺѤޤ��Ƥ��ޤäƤ��ޤ��� ������������ǤϤɤ��� Python �Υ��饹�����ƥ���������ˤʤ�ʤ��Τǡ�Python �ǥ��饹�����ƥब �ɤΤ褦�˼������Ƥ��뤫��¬���ʤ��顢��� self �ˤĤ��������������Ȼפ��ޤ���
�ܤ����ϡ� Wikipedia (���ܸ�� �䡢 Wikipedia (�Ѹ�� �Ƥ����������ܤ������⤵��Ƥ��ޤ���
IT ��Ȥ�ǧ���� 'LiveGate' �ǤϤ�������� IT ���ѼԤ�ۤäƤ��ޤ������ѼԤ����ξ�����������ץ������� Python �ǽޤ�����¿ʬ�ǡ����١����ȤĤʤ��äƤ���Ȼפ��ޤ����������ǤϤ���ϳ䰦���ޤ��� ���ơ�IT ���ѼԤ�ɽ�����饹���ͤ˽ޤ����� [code 1] (workers.py)
01: #! /usr/bin/env python 02: 03: """ 04: Workers in a IT company named LiveGate 05: """ 06: 07: class Workers: 08: """ This is a class of workers working in the company.""" 09: 10: def __init__(self, name, position, email, age, salary): 11: self.name = name 12: self.position = position 13: self.email = email 14: self.age = age 15: self.salary = salary 16: 17: 18: class ITWorkers(Workers): 19: """ This is a class of IT engineers. """ 20: 21: OS = 'WinNT' 22: 23: def __init__(self, language, *av): 24: Workers.__init__(self, *av) 25: self.language=language 26: 27: def work(self, n): 28: """ IT engineers should work.""" 29: 30: if self.position == 'web creator': 31: w = 'makes web site' 32: elif self.position == 'server administrator': 33: w = 'checks the trafic' 34: elif self.position == 'programmer': 35: w = 'writes programs' 36: 37: print '%s %s for %d, hours using %s on %s' % (self.name, w, n, self.language, self.OS) 38: 39: ##------------------------------------------------------------------------------------------------ 40: henley = ITWorkers('PHP', 'Henley', 'web creator', '[email protected]', 32, 700) 41: thomas = ITWorkers('Python', 'Thomas', 'server administrator', '[email protected]', 37, 900) 42: gates = ITWorkers('C', 'Gates', 'programmer', '[email protected]', 42, 1200) 43: 44: henley.OS = 'Mac' 45: thomas.OS = 'Linux' 46: 47: if __name__ == '__main__': 48: 49: henley.work(8) 50: thomas.work(7) 51: gates.work(10)�ޤ���ϫƯ�Ԥ�ɽ�� class Workers ������� (7--15 ����)�� ���Υ��֥��饹�Ȥ��� ITWorkers ��������Ƥ��ޤ� (18--37 ���ܡˡ� 18 ���ܤ� ITWorkers(Workers) �� ITWorkers �� Workers �Υ��֥��饹�Ǥ��뤳�Ȥ��Ƥ��ޤ��� ITWorkers �Ͽƥ��饹�� Workers ��°��������Ѥ��ޤ��� Workers ���饹�Υ����Ͻ���������Ȥ��� �������ѿ��Ȥ��ơ�̾�������e-mail ���ɥ쥹��ǯ�𡢵������ݻ�����ޤ��� ITWorkers �Ϥ����Τۤ��˻��Ѹ�������ѿ��Ȥ�����¸���ޤ��� ���Ѹ���Τۤ��� *av �Ȥ��ƥ쥹�ȥѥ����� �ޤȤ�Ƥ��ޤ���Workers.__init__ ���Ƥ֤Ȥ������Ÿ�����Ƥ��ޤ��� ���ʤߤ� __init__ ���������ä�ľ��˸ƤФ���ü��åɤǤ� �ʾ�ά��ǽ�������¼�Ū�ʥ��ȥ饯�����ˡ�
���ơ�IT ���ѼԤˤ����ʬƯ���Ƥ���ʤ���Фʤ�ʤ��Τǡ���å� work ��������ޤ� (25--33 ����)�� work ��2���ܤΰ��� n ��Ư�������֤Ǥ��� �����Ǥϡ�����˱����Ʋ������֤�������ɽ����������Ǥ��� �Ĥ��Ǥˡ��Ȥä��ץ�����ߥ��졢OS ��ɽ�����ޤ��� IT ���ѼԤ���������ԥ塼����Ȥ��Τǡ����� OS ���������Ƥ��ޤ��� ITWorkers ���饹�ˤϥ��饹�ѿ� OS �����ꡢ'WinNT' ���ǥե���Ȥ� OS �����ꤵ��Ƥ��ޤ� (19 ���ܡˡ� �ĤޤꡢLiveGate �Ǥ����̤� WindowNT ��ȤäƤ���Ȥ������ȤǤ��� ���ơ������ǡ�3�ͤ� IT ���ѼԤ��о줷�Ƥ�餤�ޤ��礦��̾���� Henley, Thomas, Gates �Ǥ��� Henley �� web ���ꥨ�������Ǥ����ݽѲ�ȩ����� Mac ��ȤäƤ��ޤ� (44 ���ܡˡ� Thomas �ϥ����ƥ�����ԤǤ����Ż�������� Linux ��Ȥ��ޤ� ��45 ���ܡˡ� �ץ�����ޡ��� Gates �ϥ��ǥ��������Ȥ���� OS �ˤϤ������ʤ��Τǥǥե���Ȥ� 'WinNT' ��Ȥä� �Ż��Ƥ��ޤ���Henley, Thomaso, Gates �Ϻ������줾�� 8, 7, 10 ����Ư���ޤ��� (43--45)��
�����ǡ����դ������Τϡ�henley �� thomas �˰㤦 OS �����ꤹ��Ȥ������Ȥϡ� ����̾�����֤� OS �Ȥ�������ȥ��ä���Ȥ������ȤǤ���gates ��̾�����֤ˤ� OS �Ȥ�������ȥ ���ʤ��Τǡ�ITWorkers ��̾�����֤ޤ�õ���ˤ����ޤ����� henley �� thomas �ϼ�ʬ��̾�����֤� OS �����Ĥ���Τ� �虜�虜���õ���˹Ԥ��ʤ��ǡ���ʬ�Τ�Ȥ��Ȥ������ȤǤ��� Ʊ�ͤˡ�work �Ȥ�������ȥ��ġ��� IT ���ѼԤ�̾�����֤ˤϤ���ޤ��� ITWorkers ��̾�����֤˹ԤäƸ��Ĥ��Ƥ��ޤ���
workers.py ��¹Ԥ���ȼ��Τ褦�ˤʤ�ޤ���
D:\doc\05-07\py_test>python workers.py
Henley makes web site for 8 hours, using PHP on Mac
Thomas checks the trafic for 7 hours, using Python on Linux
Gates writes programs for 10 hours, using C on WinNT
�¤ϡ��ؿ���ǡ����Ȥ��Ƽ�갷�������ʹ�����̣�Ǥδؿ�������ˤ��Ѥ��ƥ��֥������Ȼظ��������Τ� ��ñ�Ǥ����ƥ��֥������Ȥ�̾�����֤ϥϥå���ɽ��Python �Ѹ�Ǥϼ���ˤ��Ѥ���ɽ�����Ȥ��Ǥ��� ���֥������Ȥγ��ع�¤�ϥϥå���ɽ���ع�¤�ˤ��뤳�Ȥˤ�ä�ɽ�����Ȥ��Ǥ��ޤ��� Python ��ؿ���ǡ����Ȥ��Ƽ�갷����Τǡ���ñ�˥��֥������Ȼظ��ˤ��뤳�Ȥ��Ǥ��ޤ���
��ˡ�workers.py �����Υ��饹�����ƥ��Ȥäƽ�ľ���Ƥߤޤ��礦�� ��ľ���������ɤ�С��ʤ���åɤ��������� self �ʤΤ����狼��Ȼפ��ޤ���
[code 2] (workers2.py)
01: #! /usr/bin/env python 02: 03: """ 04: This code demostrates how easy to imprement an object orientated system on a functional programming language. 05: It only requires a nested hash table. 06: """ 07: 08: 09: def Cls(cls=None, **key): 10: """ making a new class""" 11: key['class'] = cls 12: return key 13: 14: def new(cls, **key): 15: """ making an instance """ 16: key['class'] = cls 17: return key 18: 19: 20: def geta(obj, attr): 21: """ getting the attribute of object """ 22: if attr in obj: 23: return obj[attr] 24: elif(obj['class']): 25: return geta(obj['class'], attr) 26: else: 27: return None 28: 29: def tell(obj, method, *av): 30: """ tell object do something""" 31: fun=geta(obj, method) 32: if callable(fun): 33: return fun(obj, *av) 34: 35: if __name__=='__main__': 36: 37: def it_work(self, n): 38: """This funciton demonstrates how IT engineers work. 39: Notice that arguments of thie function is identical to the method 'work' in workers.py""" 40: 41: if geta(self, 'position') == 'web creator': 42: w = 'makes web site' 43: elif geta(self, 'position') == 'server administrator': 44: w = 'checks the trafic' 45: elif geta(self, 'position') == 'programmer': 46: w = 'writes programs' 47: 48: print '%s %s for %d, hours using %s on %s' % (geta(self, 'name'), w, n, geta(self, 'language'), geta(self, 'OS')) 49: 50: workers = Cls() # dummy class 51: it_workers = Cls(workers, OS='winNT', work=it_work) # class of IT workers 52: 53: henley = new(it_workers, language='PHP', name='henley', 54: position='web creator', email='[email protected]', age=32, salary=700) 55: thomas = new(it_workers, language='Python', name='Thomas', 56: position='server administrator', email='[email protected]', age=37, salary=900) 57: gates = new(it_workers, language='C', name='Gates', 58: position='programmer', email='[email protected]', age=42, salary=1200) 59: henley['OS'] = 'Mac' 60: thomas['OS'] = 'Linux' 61: 62: tell(henley, 'work', 8) 63: tell(thomas, 'work', 7) 64: tell(gates, 'work', 10)workers2.py �Ǥ�ñ�㲽�Τ��ᡢ¿�ŷѾ��Ϥʤ��ˤ��ޤ���
�ޤ������饹����ؿ� Cls �ȥ�������ؿ� new �Ƥߤޤ��礦�� �¤ϡ�ξ���Ȥ�ޤä���Ʊ����ΤǤ�����äƤ��뤳�Ȥϡ���������ѿ��Υϥå���ɽ�˿ƥ��饹�� ɽ�� 'class' ��ä����֤������Ǥ���
���ˡ��ؿ� geta �Ƥߤޤ��礦������ϥ��֥������Ȥ�°����õ���ؿ��Ǥ��� ���֥������ȤΥϥå���ɽ�ˤ���°�����ʤ���С��ƥ��饹�Υϥå���ɽ����°����õ���Ȥ������Ȥ� �Ƶ�Ū�˹Ԥ��ޤ�������ǡ��Ѿ��ȥ����С��饤�ɤ������Ǥ��ޤ��� °�����ʤ���о��õ���˹Ԥ����ȤǷѾ��������Ǥ��ޤ����ޤ��� ���Υ��֥������Ȥ�°�����������С����°����̵�뤷�Ƥ����Ȥ��Τ� ������������Ǥ��ޤ���
�ޤ����ؿ� tell �� ���֥������Ȥ˲�������ؿ��Ǥ����ޤ���geta ��Ȥäƥ�åɤ�õ���ޤ��� �����ơ����Ĥ�����åɤ��ؿ��ʤ�С������Ƥ�ǡ���̤��֤��ޤ���
����ǡ����饹�����ƥ���������ؿ� Cls, new, geta, tell ���Ǥ��ޤ����� �����ƴ�ñ�˺�줿���Ȥ����ܤ��Ƥ���������
���ơ�����ä����饹�����ƥ��Ȥä� workers.py ���ľ���� 37 ���ܰʹߤΤ褦�ˤʤ�ޤ���
�ޤ����ؿ� it_work ��������ơ�IT ���ѼԤ�Ư�������ɽ���ޤ��� �������� self �ˤʤäƤ��뤳�Ȥ����դ��Ƥ��������� �ؿ� it_work ����Ǥ� geta ��Ȥä� IT ���ѼԤ�°���� ���Ƥ��ޤ���
�����ơ�it_workers ���饹����Ȥ����ؿ� it_work �ؤΥݥ����� 'work' ���ͤȤ��Ƥޤ��� �Ĥޤꡢ�ϥå���ɽ it_workers �� ���� 'work' ���ͤ� it_work �ؤΥݥ����Ȥ������ȤǤ��� �ؿ���ǡ����Ȥ��ư�����ȡ��ϥå���ɽ�˴ؿ����Ȥ߹��ळ�Ȥ��Ǥ��ޤ���
workers.py ��Ʊ���褦�˻��ͤ� IT ���ѼԤ��о줵���ޤ��� �ü��å� __init__ �����ߥ�졼�Ȥ���Τϴ�ñ�ǤϤʤ��Τǡ� �����Ǥϥ�������Ȥ��� IT ���ѼԤ�°�������ƥ�����ɥѥ����Ȥ���Ϳ���ޤ����� �����ơ��ؿ� tell ��Ȥä�3�ͤ�Ư���Ƥ�餤�ޤ��� workers.py �Ȥޤä���Ʊ����̤������ޤ���
D:\doc\05-07\py_test>python workers2.py
Henley makes web site for 8 hours, using PHP on Mac
Thomas checks the trafic for 7 hours, using Python on Linux
Gates writes programs for 10 hours, using C on winNT
[code 1] �� [code 2] ����٤���ɤ����Ƥ��뤳�Ȥ��狼��Ȼפ��ޤ���
[code 1] | [code3] |
---|---|
obj.attribute | geta(obj, 'attribute') |
obj.method(*av) | tell(obj, 'method', *av) |
def work(self, n) | def it_work(self, n) |
D:\doc\05-07\py_test>python Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. [x]>>> import sys [x]>>> from workers import * [1]>>> gates.__dict__ {'salary': 1200, 'name': 'Gates', 'language': 'C', 'age': 42, 'position': 'programmer', 'email': '[email protected]'} [2]>>> henley.__dict__ {'salary': 700, 'name': 'Henley', 'language': 'PHP', 'age': 32, 'position': 'web creator', 'OS': 'Mac', 'email': '[email protected]'} [3]>>> ITWorkers.__dict__ {'__module__': 'workers', 'work': <function work at 0x00A34630>, 'OS': 'WinNT', '__doc__': ' This is a class of IT engineers. ', '__init__': <function __init__ at 0x00A345F0>} [4]>>> ITWorkers.work(gates, 10) Gates writes programs for 10, hours using C on WinNT [5]>>> gates.__class__.work(gates, 10) Gates writes programs for 10, hours using C on WinNT [6]>>> getattr(henley, 'OS') 'Mac' [7]>>> getattr(henley, 'work') <bound method ITWorkers.work of <workers.ITWorkers instance at 0x00A33760>> [8]>>> getattr(henley, 'work')(8) henley makes web site for 8 hours, using PHP on Macsys �� workers �� import ���Ƥ��顢 ���ĤΥ��ޥ�ɤ����Ϥ���ͷ��Ǥߤޤ��� �ޤ���gates ��̾�����֤Ƥߤޤ��礦 ([1])�����������ʥ���ȥ������ޤ����� 'OS' �Ϥ���ޤ��� ���� henley ��̾�����֤Ƥߤޤ��礦 ([2])�� 'OS' ���������Ƥ��ޤ��� ����ˡ�ITWorkers ��̾�����֤Ƥߤޤ��礦 ([3])�� __module__, __doc__ �ʤɤΤ��餫����������줿�ѿ��Τۤ��� 'OS' �� work, __init__ ���������Ƥ��ޤ��� �ä˥�åɤϡ�<function work at 0x00A34630> �Τ褦���������Ƥ��ꡢ�ؿ��Ȥ��ƥ������ݻ�����Ƥ��뤳�Ȥ��狼��ޤ��� ���˽Ҥ٤��褦�ˡ�henley �ϼ�ʬ�� OS ���������Ƥ���Τ� �����Ȥ���gates ���������Ƥ��ʤ��Τǡ� ���õ���˹Ԥ���class ITWorkers �Ǹ��Ĥ��ä� OS ��Ȥ��ޤ���
���ơ�ITWorkers ���饹�ˤ� work �Ȥ����ؿ����������Ƥ���Τǡ� [4] �Τ褦�� ľ�ܸƤӽФ��Ƹ��ޤ��礦��gates.work(10) �Ȥ����Τ�Ʊ����̤ˤʤ�ޤ��� �ޤ��������ˤ� __class__ �Ȥ����ü��ѿ������ꡢ ��ʬ��°���륯�饹��ؤ��ޤ������äơ� [5] �Τ褦�˸ƤӽФ��Ƥ�Ʊ����̤������ޤ���
�Ǹ�� getattr ��Ȥä�ͷ��Ǥߤޤ��礦��[6] �˼����褦�ˡ�
getattr(henley, 'OS') �� henley.OS ��Ʊ����̤ˤʤ�ޤ���
���ˡ���åɤƤߤޤ��礦 ([7] )��
���Τ褦�ʷ�̤��֤äƤ��ޤ���
<bound method ITWorkers.work of <workers.ITWorkers instance at 0x00A33760>>
<workers.ITWorkers instance at 0x00A33760> ����ʬ�� henley
�Υ��ɥ쥹�Τ褦�Ǥ����ޤ������δؿ���
'function' �ǤϤʤ� 'bound method' ��ɽ������ޤ���
���Ρ�'bound method' �� [8] �Τ褦�˸ƤӽФ����Ȥ��Ǥ��ޤ���
���Τ褦���Ѳ����Ƥ��뤳�Ȥ���������ƤӽФ���硢��������
��ʬ���Ȥ�Ĥ��ʤ����ɤ���ͳ�Ǥ�����⡢��������ͳ�Ϥ���ʤ��Ȥ���Τϥ�����Ǥʤ�����Ǥ��礦��
'bound method' �� [code 2] �δؿ� 'tell' �ι�ʸ����Ȥߤʤ��ޤ���
�����Τ��Ȥ��顢�ؿ�������˥��饹�����ƥ��Ƴ�������硢 ��åɤȤ�����������ؿ��ϥ���������ˤȤ�Τ������Ǥ���Ȥ����ޤ��� class �Τʤ������������³���ϡ� def ��Ȥäơ��̾�δؿ��Ȥޤä���Ʊ�ͤ��������Ƥ��뤳�Ȥ��顢 �������פ����Υ��饹�˸��ꤵ�줿��ΤΡ��̾�δؿ���Ʊ���Ǥ���Ȥ������Ȥ��Ǥ��ޤ��� �Ĥޤꡢ��å�������������� self �Ǥ���Τ�����������Ԥ��Ǥ���Ȥ������ȤǤ��� �������ʤ��ȡ������˴ޤޤ���ѿ��Ȥ��뤳�Ȥ��Ǥ��ޤ���
Python �ϼ�³��������ؿ�����ȥ�å������ʬ��������ˡ� ���Ƥ�ؿ�����ˤ�����å�����Ȥ��ƻȤ��������������˳�����Ƥ�Ȥ��� ��«����Ƴ�����ޤ�����
���Τ褦�ˤ����Τϡ��ؿ�������ϡ����֥������Ȼظ���������������⤤�Ȥ�����ǰ�Ǥ��礦�� Python �ϴؿ������� Haskell ����¿��ʱƶ�������Ƥ��뤤���Ƥ��ޤ��� �ºݡ�[code 2] �Ǽ������褦�˴ؿ��������Ȥ��Х��֥������Ȼظ��ϴ�ñ�˼����Ǥ��ޤ���
HOME | Python | ���� |