zoukankan      html  css  js  c++  java
  • python 类的几种方法(函数)

    python中可以定义类,为面向对象语言。

    在定义个class时,可以定义3中类型的方法。包括‘实例方法’、“类方法”,“静态方法”其中不同之处:

    python类的方法
    类型 类访问 实例访问 意义
    实例方法 不可以 可以  
    类方法 可以 可以  
    静态方法 可以 可以  

    1,实例方法

      实例方法是最简单的一种方法,定义一个实例方法第一个默认的隐式传参标示调用当前方法的实例:

    #encoding:utf-8
    #小五
    class Person(object):
        def __init__(self,name):
            self.name = name
        def syaHello(self):
            return self.name+'! hello!'
        def __str__(self):
            return 'Person name(%s)'%self.name
    p1 = Person('Bob')
    print p1.syaHello() #可以输出Bob! hello!
    print Person.syaHello() #报错:unbound method syaHello() must be called with Person instance as first argument (got nothing instead)

     sayHello方法是实例的方法,所以类调用不到。

    2,类方法

       用@classmethod 装饰的方法是类方法,用类和实例都能访问到,传入的参数第一个是类,不是实例。所以访问不到实例的属性。

    
    
    #encoding:utf-8
    #小五
    class Person(object):
        gender=''
        def __init__(self,name):
            self.name = name
        @classmethod
        def sayD(self):
            print self.gender #可以正常输出‘女’
            return self.name #报错:AttributeError: type object 'Person' has no attribute 'name'
        def sayHello(self):
            return self.name+'! hello!'
        def __str__(self):
            return 'Person name(%s)'%self.name
    p1 = Person('Bob')
    print p1.sayD()
    
    
    
     

    3,静态方法

              用@staticmethod装饰的方法称为静态方法,和前2种的主要区别是第一个参数不是默认,需要调用者传入。和java中的方法一样,可以用作工具方法。

       

    #encoding:utf-8
    #小五
    class Person(object):
        gender=''
        def __init__(self,name):
            self.name = name
        @staticmethod
        def sayD(self):
            return self
        def sayHello(self):
            return self.name+'! hello!'
        def __str__(self):
            return 'Person name(%s)'%self.name
    p1 = Person('Bob')
    print p1.sayD('sssss') #可以输出sssss
    print Person.sayD('aa')  #可以输出aa
  • 相关阅读:
    [VBA]根据身份证号码计算年龄的Excel函数
    [VBA]发布一个计算桩号之差的Excel自定义函数(VBA)
    [VBA]用一个简单例子说明如何在Excel中自定义函数
    元素定位工具:Chrome浏览器ChroPath插件
    68 个 Python 内置函数
    Python错误重试
    jenkins 中展示漂亮的 HTML 测试报告
    python解决接口数据使用了RSA加密和签名
    Python装饰器用法
    Pycharm中文版教程
  • 原文地址:https://www.cnblogs.com/-xiaowu/p/4955888.html
Copyright © 2011-2022 走看看