• Python 类的使用


    类的使用
    
    文档化函数:
    在函数的开头写下字符串,它会作为函数的一部分运行存储,这称为文档字符串(常用来描述该函数的信息)。
    如下:
    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]
    

      

  • 相关阅读:
    杨老师课堂_VBA学习教程之一键合并所有文件
    无题
    杨老师课堂_VBA学习教程之VBA中使用函数
    杨老师课堂_Java核心技术下之控制台模拟文件管理器案例
    杨老师课堂之JavaScript定时器_农夫山泉限时秒杀案例
    交换机级联,堆叠,集群技术介绍
    IP划分
    光纤
    交换机
    URL中“#” “?” &“”号的作用
  • 原文地址:https://www.cnblogs.com/JcHome/p/10111664.html
Copyright © 2020-2023  润新知