python属性与方法,python_类属性_实例属性

  python属性与方法,python_类属性_实例属性

  详细讲解了python调用类属性的方法。测试时经常使用类调用。下面这篇文章主要介绍Python类属性和方法调用的相关信息。通过示例代码非常详细的介绍,有需要的朋友可以参考一下。

  00-1010一、类和对象概述二。III类的定义和使用。类属性和方法的调用。私有成员和公共成员概述Python从设计之初就是面向对象的语言。正因为如此,用Python创建类和对象很容易。

  

目录

  在面向对象编程中,数据和对数据的操作被封装在一起形成一个整体(对象),不同的对象通过消息机制进行通信或同步。对同类型的对象进行分类抽象后,得出共同特征,形成类。

  类的抽象包括两个方面:

  1.数据抽象:描述一个类对象的公共属性或状态。

  2.过程抽象:描述一个类对象的共同行为或功能操作。

  在python中,类用于定义相同类型的对象。类是一种广义的数据类型,它可以定义复杂数据的特征,包括:

  1.静态特征(即数据抽象):在创建类时以变量形式表达对象特征的成员称为属性(数据成员)。

  2.动态特性(即行为抽象,也就是对数据的操作方法):以函数形式表达对象行为的成员称为成员方法,数据成员和成员方法统称为类的成员。

  类是实现代码重用和设计重用的重要方法。封装、继承和多态是面向对象编程的三大要素。

  类是生成对象的抽象模板,对象是从类创建的具体实例。

  

一、类、对象概述

  使用Python class关键字定义一个类。class关键字后面跟一个空格,后面跟类名。如果它是从其他基类派生的,那么所有的父类都需要放在一对括号中,并用逗号分隔,后跟一个冒号。最后,定义换行符和类的内部实现。

  类名的第一个字母通常是大写的。

  Class Car(object): #定义了一个类,这个类是从object类派生出来的(所有类的祖先,定义类的时候没有其他父类的时候写object)

  Can_move=True #定义类属性

  DEF INFOR (SELF) 3360 #定义成员方法

  打印(“这是一辆汽车”)

  类方法和普通函数之间只有一个特殊的区别。——它们必须有一个额外的第一个参数名。按照惯例,它的名字是self(self代表一个类的实例,而不是类;不是python关键字,我们改成别的就可以正常执行了)。

  

二、类的定义与使用

  一旦定义了一个类,就可以用它来实例化一个对象,并通过“对象名”来访问它的数据成员或成员方法。员”。

  Spring=Bird() #实例化一个对象

  Print(Bird.have_feather) #通过类名调用属性

  Print(Bird.have_head) #通过对象名调用属性

  Spring.move() #通过对象名调用方法

  方法大致分为三类,即类方法、实例方法和静态方法,其中实例方法是最常用的。我们知道,调用实例方法实际上有两种方式,可以通过类对象调用,也可以直接通过类名调用。

  通常我们习惯用类对象来调用类中的实例方法。但是如果你想用类调用实例方法,你不能这样做:

  课堂学习:

  定义信息(自身):

  打印(“学习Python”)

  #通过类名直接调用实例方法

  Study.info()

  运行上述代码,程序将报告以下错误:

  回溯(最近呼叫):

  模块中文件 D:\python3.6\demo.py 第5行

  gt;
Study.info()
TypeError: info() missing 1 required positional argument: 'self'

  

  其中,最后一行报错信息提示我们,调用 info() 类方式时缺少给 self 参数传参。这意味着,和使用类对象调用实例方法不同,通过类名直接调用实例方法时,Python 并不会自动给 self 参数传值。

  读者想想也应该明白,self 参数需要的是方法的实际调用者(是类对象),而这里只提供了类名,当然无法自动传值。

  因此,如果想通过类名直接调用实例方法,就必须手动为 self 参数传值。例如修改上面的代码为:

  

class Study:

   def info(self):

   print("学 Python")

  clang = Study()

  #通过类名直接调用实例方法

  Study.info(clang)

  再次运行程序,结果为:

  

学 Python

  

  可以看到,通过手动将 clang 这个类对象传给了 self 参数,使得程序得以正确执行。实际上,这里调用实例方法的形式完全是等价于 clang.info()。

  值得一提的是,上面的报错信息只是让我们手动为 self 参数传值,但并没有规定必须传一个该类的对象,其实完全可以任意传入一个参数,例如:

  

class Study:

   def info(self):

   print(self,"学 Python")

  #通过类名直接调用实例方法

  Study.info("zhangsan")

  

  运行结果为:

  

zhangsan 学 Python

  可以看到,zhangsan 这个字符串传给了 info() 方法的 self 参数。显然,无论是 info() 方法中使用 self 参数调用其它类方法,还是使用 self 参数定义新的实例变量,胡乱的给 self 参数传参都将会导致程序运行崩溃。

  总的来说,Python 中允许使用类名直接调用实例方法,但必须手动为该方法的第一个 self 参数传递参数,这种调用方法的方式被称为非绑定方法。

  用类的实例对象访问类成员的方式称为绑定方法,而用类名调用类成员的方式称为非绑定方法。

  

  

四、私有成员与公有成员

  

  • 私有成员在类的外部不能直接访问,一般是在类的内部进行访问和操作,或者在类的外部通过调用对象的公有成员方法来访问,而公有成员是可以公开使用的,既可以在类的内部进行访问,也可以在外部程序中使用。
  • 从形式上看,在定义类的成员时,如果成员名以两个下划线开头但是不以两个下划线结束则表示是私有成员,否则就不是私有成员。
  • Python并没有对私有成员提供严格的访问保护机制,通过一种特殊方式对象名._类名__xxx也可以在外部程序中访问私有成员,但这会破坏类的封装性,不建议这样做。

  在Python中,以下划线开头的变量名和方法名有特殊的含义,尤其是在类的定义中。

  

_xxx:受保护成员;
__xxx__:系统定义的特殊成员;
__xxx:私有成员,只有类对象自己能访问,子类对象不能直接访问到这个成员,但在对象外部可以通过对象名._类名__xxx这样的特殊方式来访问。

  

  注意:Python中不存在严格意义上的私有成员。

  

  

总结

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

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

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