Pythonクラスとクラスインスタンス

2100 ワード

>>> class FooClass(object):
...     """my very first class: FooClass"""
...     version = 0.1
...     def __init__(self, nm='Chenbaojia'):
...             """constructor"""
...             self.name = nm
...             print 'Created a class instance for', nm
...     def showname(self):
...             """display instance attribute and class name"""
...             print 'Your name is', self.name
...             print 'My name is', self.__class__.__name__
...     def showver(self):
...             """display class(static) attribute"""
...             print self.version
...     def addMe2Me(self,x):
...             """apply + operation to argument"""
...             return x + x
... 
>>> foo1 = FooClass()
Created a class instance for Chenbaojia
>>> FooClass()
Created a class instance for Chenbaojia
<__main__.fooclass object="" at="">
>>> foo1.showname()
Your name is Chenbaojia
My name is FooClass
>>> FooClass().showname()
Created a class instance for Chenbaojia
Your name is Chenbaojia
My name is FooClass
>>> foo1.showver()
0.1
>>> FooClass().showver()
Created a class instance for Chenbaojia
0.1
>>> FooClass.showver()
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unbound method showver() must be called with FooClass instance as first argument (got nothing instead)
>>> print foo1.addMe2Me(5)
10
>>> print FooClass().addMe2Me(5)
Created a class instance for Chenbaojia
10
>>> print foo1.addMe2Me('xyz')
xyzxyz
>>> print FooClass().addMe2Me('xyz')
Created a class instance for Chenbaojia
xyzxyz
>>> foo2 = FooClass('Jane Smith')
Created a class instance for Jane Smith
>>> foo2.showname()
Your name is Jane Smith
My name is FooClass
>>>