设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 538|回复: 2
收起左侧

如何使用Python的类? 优势有哪些?

[复制链接]
发表于 2020-7-30 18:06:25 | 显示全部楼层 |阅读模式
  Python是一种面向对象的高级语言,因此类对于Python非常重要。类是一个空间,在该空间中变量(属性/方法)分别存储。运算符' . '用于调用类的属性和方法。类是事务类的抽象,它不是真的存在,它描述了事务的共性。在搜索类属性时,python首先找到实例,然后在实例中找到属性,当找不到时,它将在类内部进行搜索。那么如何使用Python的类? 优势有哪些?下面让我们一起来详细了解一下吧。
  如何使用Python的类?
  1.在Python中,定义类是通过class关键字来实现的:
  class Student(object):
  Pass
  class 后面紧接着是类名,即Student.类名通常采用单词首字母大写的形式命名,比如 StudentCore。
  (object) 表示该类是从哪个类继承来的。如果没有合适的继承类,则通常使用 object 类,这是所有类都会继承的类。
  2.实例化一个类是通过在类名后面加小括号“()”来实现的:
  pupil=Student ()
  “小学生”是“学生”这个的一个实例。所谓实例,可以将其理解为类的化身。类不能被直接使用,只能先将其实例化,然后用实例代表类,进而调用类中的方法处理数据。那么实例是怎么代表类的呢?在定义类及其方法时,有一个参数叫self, 它就是串联实例与类之间的关键参数,可以简单地理解为“self=实例名”。
  类的下面有属性和方法。可以将属性理解为静态的数据,将方法理解为动态的处理函数。比如,在下面的代码中定义了“学生”类,其中_ _init_ _是属性,print_score 是方法。
  #-*-coding:utf-8-*
  Class Student (object) :
  def _ _ init_ _ (self,name,score) :
  self.name= name
  self.score=score
  def print_score (self) :
  print ('%s: %s'% (self. _ _name,self. _ _acore) )
  3.实例化上面的类,然后分析Python 如何利用实例化类调用类中的方法。
  完整的实例化类与调用过程如下:
  pupil=student (name='lilei',score=99)
  pupil.print_score ()
  按照前面的说法,self=实例名,那么 pupil=Student (name='lilei',score=99) , 实例化类的第一步是执行 _ _init_ _ 语句,即 Student (self='pupil',name='lilei',score=99) , 则可知pupil.name='lilei',pupil.score=9.实例化类的第二步是执行 pupil.print_score () 语句,调用实例的方法就是调用类的方法,而这个方法是按照格式打印出
  pupil.name:pupil.score,mlilei: 99。
  Python类优势有哪些?
  1.类的访问限制
  所谓类的访问限制,即在类的外部不能直接调用类中的数据。在 Python 中,在变量前加“_ _”可将变量置为私有变量,使其只能在类中被使用,不能被类之外的其他函数(方法)调用。下面代码中的name 参数表示的就是私有变量。
  #-*-coding:utf-8-*-
  #_ _author_ _='大婶N72’
  class Student (object) :
  def _ _init_ _(self,name,score) :
  self._ _name= name
  self.score= score
  def print_score (self) :
  print ('%s: %S'% (self._ _name,self._ _score) )
  MeiMei=Student ('hello', 99)
  print (MeiMei.score)
  print (MeiMei. _ _name)
  代码的运行结果很好地佐证了加了“_ _”的参数是不能被调用的,没加“_ _”的参数是可以直接被调用的,如下所示:
  C:\Python36\python3. exe F:/Autotest_interface_demo/test. py www.zpedu.com/it/rjyf/
  99
  Traceback (most recent call last):
  File "F:/Autotest interface demo/test.py”, line 12, in
  print (MeiMei._name)
  AttributeError: ' Student' object has no attribute'__name’
  Process finished with exit code 1
  2.类的继承
  所谓“继承”, 从字面上看很好理解:如果一个类继承了另外一个类,则这个类就有了被继承的类的所有方法和属性。我们可以直接使用这些方法和属性,无须再单独写。下面举一个例子来解释什么是继承。类的基本定义如下:
  # -*- coding:utf-8 -*-
  # _ _author_ _=‘大婶N72’
  # 父类
  class Parent (object) :
  def print_self (self) :
  return “我是父类”
  # 子类继承父类
  class Student (Parent) :
  def_ _init_ _ (self,name,score) :
  self. _ _name= name
  self.score=score
  def print_score (self) :
  print ('%s: %s'% (self. _ _name,self. _ _score) )
  MeiMei=Student ('hello', 99)
  print (MeiMei.score)
  #直接在子类中使用父类的方法
  print (MeiMei.print_self ()
  在上面的例子中,子类 Student 继承了父类 Parent.方法是在类名称后面的小括号中加上父类的名称。子类继承了父类,则有了父类 Parent 的方法 print_self, 从而可以直接在自己的实例名中使用。
  3.类的多态
  如果子类继承了父类,但是又想改变父类的方法,则这时无须修改父类的方法,只需要在子类中添加相同的方法名就可以起到覆盖的作用,这就是多态。
  # -*- coding:utf-8 -*-
  # _ _author_ _='大婶N72'
  #父类
  class Parent (object) :
  def print_self (self) :
  return"我是父类"
  #子类继承父类
  class Student (Parent) :
  def _ _init_ _ (self,name,score) :
  self. _ _name= name
  self.score=score
  def print_score (self) :
  print ('%s: %S'% (self. _name,self. _ _score) )
  def print_self (self) :
  return"我是子类"
  MeiMei=Student ('hello', 99)
  print (MeiMei.score)
  #子类的方法覆盖父类方法
  print (MeiMei.print_self () )

发表于 2020-7-31 11:31:54 | 显示全部楼层
好东西谢谢楼主分享
沙发 2020-7-31 11:31:54 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-3 18:31:17 | 显示全部楼层
客气客气,欢迎常来
板凳 2020-8-3 18:31:17 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-3-28 18:54 , Processed in 0.060134 second(s), 10 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表