类是面向对象编程的核心,它扮演相关数据及逻辑的容器角色
使用class关键字定义类可以提供一个可选的父类或者说基类,如果没有合适的基类
那就使用object作为基类。class行之后是可选的文档字符串
class FooClass(object):
version = 0.1 #class (data)属性
def __init__(self,nm='John Doe'):
"""constructor"""
self.name = nm #class 实例属性
print 'Created a class instace for',nm
def showname(self):
"""display class(static) attribute"""
print 'Your name is',self.name
print 'My name is',self.__class__.__name__
def shower(self):
"""display class(static) attribute"""
print self.version # references FooClass.version
def addMe2Me(self, x): # does not use 'self'
return x + x
在上面这个类中,我们定义了一个静态变量version,它将被所有实例及四个方法共享,
__init__()方法有一个特殊名字,所有名字开始和结束都有两个下划线的方法都是特殊方法
当一个类实例被创建时,__init__()方法会自动执行,在类实例创建完毕后执行,类似构建函数
__init__()可以被当成构建函数,不过不像其他语言中的构建函数
它并不创建实例---它仅仅是你的对象创建后执行的第一个方法
如何创建类实例
# -*- coding:utf-8 -*-
# !/usr/bin/python
class FooClass(object):
version = 0.1 #class (data)属性
def __init__(self,nm='John Doe'):
"""constructor"""
self.name = nm #class 实例属性
print 'Created a class instace for',nm
def showname(self):
"""display class(static) attribute"""
print 'Your name is',self.name
print 'My name is',self.__class__.__name__
def shower(self):
"""display class(static) attribute"""
print self.version # references FooClass.version
def addMe2Me(self, x): # does not use 'self'
return x + x
foo1 = FooClass()
print foo1
print type(foo1)
C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/core/a1.py
Created a class instace for John Doe
<__main__.FooClass object at 0x02230430>
<class '__main__.FooClass'>
屏幕上显示的字符串正式自动调用__init__()方法的结果,当一个实例被创建 __init__()会被自动调用
不管这个__init__()是自定义的还是默认的