类的使用
文档化函数:
在函数的开头写下字符串,它会作为函数的一部分运行存储,这称为文档字符串(常用来描述该函数的信息)。
如下:
def test(x,y):
u"""这是一个Python程序,返回参数x加参数y的值"""
return x+y
def test1():
'this is python program!'
return 1
print test1.__doc__
print help(test)
运行结果:
this is python program! #test1.__doc__的打印结果
Help on function test in module __main__:
test(x, y)
这是一个Python程序,返回参数x加参数y的值
None
[Finished in 0.2s]
类的创建:
# -*-encoding:utf-8 -*-
__metaclass__=type #新式类的创建方式
class person:
'create person class and And related properties and methods'
def setName(self,name):
'Set the name of the person'
self.name=name
def getName(self):
'get the name of the person'
return self.name
def Introduction(self):
print "my name is %s" % self.name
print "hello %s ,how are you?" %self.getName()
if __name__=="__main__":
p=person()
p.setName('joce')
p.Introduction()
lambda 关键字
add=lambda x,y : x+y
print add(1,2)
#等价于
def add_test(x,y):
return x+y
print add_test(10,20)
继承:
class SuperA: #a的父类
def add(self,a,b):
return a+b
def minues(self,x,y):
return x-y
class a(SuperA): #a基础SuperA类
def show(self,a,b):
print a,b
newa=a() #实例化a类
if issubclass(a,SuperA): #检查a是否为SuperA类
result=newa.add(20,30)
print result
运行结果:
50
[Finished in 0.2s]
构造方法:
构造方法是用于主要初始化类的成员属性,构造方法以__init__()方法定义,具体如下实例:
class A:
def __init__(self,a,b):
self.a=a
self.b=b
def show(self):
if self.a>self.b:
print self.a
else:
print self.b
a=60
b=20
test=A(a,b)
test.show()
运行结果:
60
[Finished in 0.3s]
子类可以继承父类的构造方法,并获取到父类的成员属性
__metaclass__=type #新式类定义
class SuperA:
def __init__(self,a,b):
self.a=a
self.b=b
def size(self):
if self.a>self.b:
print self.a
else:
print self.b
class A(SuperA):
def __init__(self):
super(A,self).__init__(a,b) #super只能用于新式类
self.name="python"
def show(self):
print self.name
a=90
b=40
testA=A() #此处类似初始化A类构造方法和父类的构造方法,并将a、b传给父类构造方法
testA.show()
testA.size()
运行结果:
python
90
[Finished in 0.2s]
静态方法:
静态方法的定义没有self参数,且能够被类本身直接调用
__metaclass__=type
class A:
def show():
print u"这是静态方法"
show=staticmethod(show)
def info(self):
print u"普通方法"
#第一种调用方式,通过实例化对象调用
test=A()
test.show()
#第二种调用方式,直接通过类名进行调用(普通方法只能通过类实例化对象进行调用)
A.show()
运行结果:
这是静态方法
这是静态方法
[Finished in 0.2s]
通过装饰器定义静态方法:
__metaclass__=type
class A:
@staticmethod #静态方法装饰器你
def show():
print u"这是静态方法"
def info(self):
print u"普通方法"
#第一种调用方式,通过实例化对象调用
test=A()
test.show()
#第二种调用方式,直接通过类名进行调用(普通方法只能通过类实例化对象进行调用)
A.show()
运行结果:
这是静态方法
这是静态方法
[Finished in 0.1s]
类方法:
类方法在定义时需要名为cls的类似于self的参数,类成员方法可以直接用类的具体对象调用,
但cls参数是自动被绑定到的类。
__metaclass__=type
class A:
@classmethod
def cmethod(cls):
print "this is class method",cls
# cmethod=classmethod(cmethod)
def info(self):
print u"普通方法"
#第一种调用方式,通过实例化对象调用
test=A()
test.cmethod()
#第二种调用方式,直接通过类名进行调用(普通方法只能通过类实例化对象进行调用)
A.cmethod()
运行结果:
this is class method <class '__main__.A'>
this is class method <class '__main__.A'>
[Finished in 0.2s]