1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
      <output id="hzk7v"></output>
    2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
    3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

      Python面向对象程序设计类变量与成员变量类方法与成员方法用法分析

       更新时间2019年04月12日 11:21:22   作者微信1257309054   我要评论

      这篇文章主要介绍了Python面向对象程序设计类变量与成员变量类方法与成员方法用法,结合实例形式较为详细的分析了类变量与成员变量类方法与成员方法类方法与静态方法等概念原理及使用技巧,需要的朋友可以参考下

      本文实例讲述了Python面向对象程序设计类变量与成员变量类方法与成员方法用法分享给大家供大家参考具体如下

      类变量与成员变量

      在类中声明的变量我们称之为类变量[静态成员变量]

      init()函数中声明的变量并且绑定在实例上的变量我们称之为成员变量

      类变量直接可以通过类名来调用

      1若类变量与成员同时存在并且同名

      使用对象来调用的时候获取的结果是成员变量的值

      使用类名来调用获取的是类变量的值

      2若类变量存在成员变量不存在

      使用对象来调用的时候它首先寻找成员变量

      如果成员变量不存在则去寻找类变量

      3若类变量不存在成员变量存在

      使用类名来调用则会报错

      总结

      类变量通过类名或者对象来调用都不会报错但是成员变量只能通过对象来调用

      通过对象来修改类属性的时候只能作用到对象自己本身作用不到类

      若是通过类名来修改类属性则只对类变量的值进行修改

      class Person(object):
        # 类变量
        name = "haha"
        age = "19"
        height = 170
        def __init__(self,name,age,weight):
          # 成员变量
          self.name = name
          self.age = age
          self.weight = weight
        def sayHeight(self):
          print(self.height)
      per = Person("xiaoming",19,50)
      print(per.name)
      print(Person.name)
      # print(Person.weight)
      per.height = 190
      print(per.height)
      print(Person.height)
      print('*********')
      Person.height = 200
      print(Person.height)
      print(per.height)
      per.sayHeight()
      
      

      输出

      xiaoming
      haha
      190
      170
      *********
      200
      190
      190

      类方法与成员方法

      类方法成员方法

      类方法使用类名来调用的方法

      成员方法使用对象来调用的方法

      若一个方法定义在类中但是没有参数[一般默认self]此时我们只能通过类名来调用

      若我们需要使用到一个类的对象首先要实例化

      class Person(object):
        def __init__(self,name,age):
          self.name = name
          self.age = age
        def say(self):
          print("I am %s, I am %d year old"%(self.name,self.age))
        def sayHello():
          print('hello I am class function')
      per = Person("xiaoming",19)
      per.say()
      Person.sayHello()
      
      

      输出

      I am xiaoming, I am 19 year old
      hello I am class function

      类方法与静态方法

      静态方法

      当调用此方法时不会将类的实例传递给它

      在类中定义的函数

      无需实例化类就可以调用它的定义在继承中是不可变的

      类方法

      当调用此方法时将函数所属的类作为第一个参数传递

      class A(object):
          def foo(self, x):
            print("executing foo(%s, %s)" % (self, x))
          @classmethod
          def class_foo(cls, x):
            print("executing class_foo(%s, %s)" % (cls, x))
          @staticmethod
          def static_foo(x):
            print("executing static_foo(%s)" % x)
        a = A()
        # 调用foo函数参数传入1
        a.foo(1)
        # 调用class_foo参数传入1
        A.class_foo(1)
        # 调用static_foo参数传入1
        A.static_foo(1)
        a.static_foo(1)

      输出

      executing foo(<__main__.A object at 0x0000024F126489B0>, 1)
      executing class_foo(<class '__main__.A'>, 1)
      executing static_foo(1)
      executing static_foo(1)

      下划线

      下划线定义特殊的方法一般情况下是系统定义名字

      __init()____del()__

      前双下划线(age):表示?#25509;?#31867;型的变量(privated)只能在本类中进行访问外界不能直接访问如__age.

      单下划线(_age)以单下划线开头的表示保护类型变量(protected)

      保护类型的变量只允许本身以及子类访问不能用于from module import *

      [使用单下划线开头的时候虽然变量能够直接被访问但是请把变量视为一个保护类型的变量尽量不要去访问

      更多关于Python相关内容?#34892;?#36259;的读者可查看本站专题Python面向对象程序设计入门与进阶教程Python数据结构与算法教程Python函数使用技巧总结Python字符串操作技巧汇总Python编码操作技巧总结Python入门与进阶经典教程

      希望本文所述对大家Python程序设计有所帮助

      相关文章

      • Python中动态获取对象的属性和方法的教程

        Python中动态获取对象的属性和方法的教程

        本文主要介绍了如何在Python中动态获取对象的属性和方法,并运行使用它们,需要的朋友可以参?#23478;?#19979;
        2015-04-04
      • pyramid配置session的方法教程

        pyramid配置session的方法教程

        这篇文章主要介绍了pyramid如何配置session大家可以参考使用
        2013-11-11
      • Python中 Lambda表达式全面解析

        Python中 Lambda表达式全面解析

        Lambda是一种匿名函数当我们需要重复调用某一函数又不想写那么多代码时可以使用lambda表达式来代替本文给大家介绍Python中 Lambda表达式需要的朋友一起学习吧
        2016-11-11
      • python opencv实现运动检测

        python opencv实现运动检测

        这篇文章主要为大家详细介绍了python opencv实现运动检测具有一定的参?#25216;?#20540;?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
        2018-07-07
      • Python实现简单石头剪刀布游戏

        Python实现简单石头剪刀布游戏

        这篇文章主要为大家详细介绍了Python实现简单的石头剪刀布的游戏具有一定的参?#25216;?#20540;?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
        2019-01-01
      • Python基于Tkinter模块实现的弹球小游戏

        Python基于Tkinter模块实现的弹球小游戏

        这篇文章主要介绍了Python基于Tkinter模块实现的弹球小游戏,涉及Python图形绘制数值计算判断等相关操作技巧,需要的朋友可以参考下
        2018-12-12
      • PyQt 线程类 QThread使用详解

        PyQt 线程类 QThread使用详解

        QThread是我们将要详细介绍的第一个类它也是 Qt 线程类中最核心的底层类由于 PyQt 的跨平台特性QThread要隐藏掉所有平台相关的代码
        2017-07-07
      • MAC中PyCharm设置python3解释器

        MAC中PyCharm设置python3解释器

        本文给大家分享的是修改MACA中pycharm的默认的Python解释器由于默认解释器是Python2使用起来各种不便下面给大家讲解下如何修改
        2017-12-12
      • python绘制立方体的方法

        python绘制立方体的方法

        这篇文章主要为大家详细介绍了python绘制立方体的方法具有一定的参?#25216;?#20540;?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
        2018-07-07
      • 用Python写脚本,实现完全备份和增量备份的示例

        用Python写脚本,实现完全备份和增量备份的示例

        下面小编就为大家分享一篇用Python写脚本,实现完全备份和增量备份的示例具有很好的参?#25216;?#20540;希望对大家有所帮助一起跟随小编过来看看吧
        2018-04-04

      最新评论

      3dԻв

        1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
          <output id="hzk7v"></output>
        2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
        3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

            1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
              <output id="hzk7v"></output>
            2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
            3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>