python 类定义,python类定义的讲解_1

  python 类定义,python类定义的讲解

  本文主要介绍Python类的定义和使用。类名只能是合法的标识符,但只满足Python的语法要求:如果考虑到程序的可读性,Python的类名必须由一个或多个有意义的单词连接起来。下面的介绍就是基于这些基本内容,有需要的朋友可以参考一下。

  00-1010 1.基本概念2。定义人员类别3。类别定义4。类方法定义5。类继承6。班级公私7。子类调用父类的方法。

  

目录

  在面向对象编程过程中,有两个重要的概念:类和对象(也称实例),其中类是一组对象的抽象,可以理解为某个概念;对象是一个具体的实体。从这个意义上说,日常生活中的人其实是人的对象,而不是人。

  Python 定义类的简单语法如下:

  类名:

  执行语句.

  零到多个类变量.

  零到多个方法.

  类名只要是一个合法的标识符即可,但这仅仅满足的是 Python 的语法要求:,从程序的可读性来说,Python的类名必须由一个或多个有意义的单词连接,每个单词的首字母大写,其他字母全部小写,单词之间不能使用分隔符。

  从上面的定义来看,Python的类定义有点像函数定义,以冒号(:)开头,以统一缩进的部分作为类体。区别在于函数定义使用def关键字,而类定义使用class关键字。

  Python的类定义由一个类头(指class关键字和类名)和一个统一缩进的类体组成。类体中最重要的两个成员是类变量和方法。如果你没有为一个类定义任何类变量和方法,那么这个类就相当于一个空类。如果空类不需要其他可执行语句,可以使用pass语句作为占位符。

  例如,如下类定义是允许的:

  类别空白:

  及格

  一般来说,空班没有太大的实际意义。

  类中成员之间的定义顺序没有影响,成员之间可以互相调用。

  Python最重要的两个成员是变量和方法,其中类变量属于类本身,用于定义类本身包含的状态数据;实例变量属于类的对象,用于定义对象中包含的状态数据;和方法用于定义该类的对象的行为或功能实现。

  Python是一种动态语言,因此其类中包含的类变量可以动态添加或删除(程序可以通过在类体中赋新变量来添加类变量),程序也可以在任何地方向已有的类添加变量;程序可以通过del语句删除现有类的类变量。

  同样,Python对象的实例变量也可以动态添加或删除(只要赋新的实例变量,就添加实例变量),所以程序可以在任何地方给已有的对象添加实例变量;程序可以通过del语句删除现有对象的实例变量。

  默认情况下,类中定义的方法是实例方法。定义实例方法的方法和定义函数的方法基本相同,只是实例方法的第一个参数会绑定到方法的调用方(类的实例),所以实例方法至少要定义一个参数,通常命名为self。

  注意:实例方法的第一个参数不一定要叫self,其实可以叫任何参数名,但是习惯上把这个参数命名为self,可读性最好。

  在实例方法中有一个特别的方法:_ _ init _ _,这种方法叫做构造法。构造函数用来构造这个类的对象,Python通过调用构造函数(不使用new)返回这个类的对象。

  Python中许多以双下划线开头、以双下划线结尾的方法都有特殊的意义。这些特殊的方法将在本教程的后面详细介绍。

  构造是类创建对象的基本方式,所以Python也提供了一个功能:如果开发者没有为类定义任何构造方法,Python会自动为只包含一个self参数的类定义一个默认的构造方法。

  

1.基础概念

  下面程序将定义一个 Person 类:

  class="brush:py;">class Person :

      这是一个学习Python定义的一个Person类

      # 下面定义了一个类变量

      hair = black

      def __init__(self, name = Charlie, age=8):

          # 下面为Person对象增加2个实例变量

          self.name = name

          self.age = age

      # 下面定义了一个say方法

      def say(self, content):

          print(content)

  上面的 Person 类代码定义了一个构造方法,该构造方法只是方法名比较特殊:__init__,该方法的第一个参数同样是 self,被绑定到构造方法初始化的对象。

  与函数类似的是,Python 也允许为类定义说明文档,该文档同样被放在类声明之后、类体之前,如上面程序中第二行的字符串所示。

  在定义类之后,接下来即可使用该类了。

  Python 的类大致有如下作用:

  

  • 定义变量;
  • 创建对象;
  • 派生子类;

  

  

3.类定义

  

# coding:utf-8

  if __name__ == __main__:

      定义:class 类名(object):

             类属性,方法等......

      实例化: 类名(无参参数......)

      class A(object):

          pass

      a = A()

      print(a)  # <__main__.A object at 0x00D9DD50>

  

  

4.类方法定义

  

# coding:utf-8

  if __name__ == __main__:

      定义:通过def + 方法名(self,参数1,参数2......) self是必须的

      调用:object.方法名(参数1,参数2......)

      class B(object):

          sex = man

          def talk(self, name):

              print(name)

      b = B()

      b.talk(ok)  # ok

  

  

5.类的继承

  

# coding:utf-8

  if __name__ == __main__:

      在声明类的时候指定这个类继承哪些类

      class 类名(extend1,extend2.......):

         属性,方法......

      extend1,extend2 代表要继承的类。可以一次性继承多个类

      继承顺序为从左到右,如果继承的方法或属性重复,以先继承的为主

      class.__mro__ 查看类的继承链

      class C(object):

          sex = woman

          def see(self, name):

              print(f看{name})

          def talk(self, name):

              print(f说{name})

      class D(B, C):

            pass

      d = D()

      d.talk(yes)  # yes 不是 说yes  以先继承的为主

      d.see(书)  # 看书

      print(d.sex)  # man 不是 woman  以先继承的为主

      print(D.__mro__)  # (<class __main__.D>, <class __main__.B>, <class __main__.C>, <class object>)

  

  

6.类的公有,私有

  

# coding:utf-8

  if __name__ == __main__:

      私有属性定义: __+变量名

      私有方法定义: __+函数名(self,参数1,参数2......)

      私有外部无法访问,只能内部访问。但是私有属性可以在外部通过object._+类名__+变量名 强制访问

      class E(object):

          __name = xie

          sex = man

          def __talk(self, name):

              print(name)

          def run(self):

              self.__talk(ok)

          def dp(self):

              print(self.__name)

      e = E()

      # print(e.__name) Error 外部无法访问私有属性 D

      print(e.sex)  # man

      # e.__talk(yes) Error 外部无法访问私有方法

      # object._+类名__+变量名 强制访问

      print(e._E__name)  # xie

      e.run()  # ok

      e.dp()  # xie

  

  

7.子类调用父类的方法

  

# coding:utf-8

  if __name__ == __main__:

      通过super().方法(参数1,参数2......)调用,该用法要求python版本3以上

      或

      supper(子类名,self).方法(参数1,参数2......)

      class F(object):

          def talk(self, name):

              print(fsuper name is {name})

      class G(F):

          def talk(self, children_name, super_name):

              self.print_children_name(children_name)

              super().talk(super_name)

          def talk2(self, children_name, super_name):

              self.print_children_name(children_name)

              super(G, self).talk(super_name)

          def print_children_name(self, name):

              print(fchildren name is {name})

      g = G()

      g.talk(小明, 大明)  # children name is 小明 super name is 大明

      g.talk2(小明, 大明)  # children name is 小明 super name is 大明

  

  到此这篇关于Python类的定义与使用详情的文章就介绍到这了,更多相关Python类的定义与使用内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: