python类属性使用,python中类的属性的定义

  python类属性使用,python中类的属性的定义

  Python从设计之初就是面向对象的语言。因此,用Python创建一个类和一个对象是很容易的。

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

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

  2.过程抽象:描述一个类对象的共同行为或功能操作。在python中,类用于定义相同类型的对象。类是一种广义的数据类型,它可以定义复杂数据的特征,包括:

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

  2.动态特性(即行为抽象,也就是对数据的操作方法):以函数形式表达对象行为的成员称为成员方法,数据成员和成员方法统称为类的成员。类是实现代码重用和设计重用的重要方法。封装、继承和多态是面向对象编程的三大要素。类是生成对象的抽象模板,对象是从类创建的具体实例。二。定义,并使用Python通过class关键字定义一个类。在class关键字之后,有一个空格,后跟类名。如果它是从其他基类派生的,那么所有的父类都需要放在一对括号中,并用逗号分隔,后跟一个冒号。最后,定义了换行符和类的内部实现。类名的第一个字母通常是大写的。Class Car(object): #定义一个类,派生自object类(所有类的祖先,定义类时没有其他父类时写Object)can _ move=true #定义类属性def infor(self): #定义成员方法print(这是一辆车)类的方法与普通函数只有一个特殊的区别。3354它们必须有一个额外的第一个参数名,按照惯例它的名字是self(self代表一个类的实例,而不是类;不是python关键字,我们改成别的就可以正常执行了)。三。在通过调用类属性和类方法来定义类之后,可以使用它来实例化一个对象,并通过“对象名”来访问其数据成员或成员方法。员”。

  Spring=Bird() #实例化对象print(Bird.have_feather) #按类名调用属性print(Bird . have _ head)#按对象名调用属性spring . move()#按对象名调用方法

  方法大致分为三类,即类方法、实例方法和静态方法,其中实例方法是最常用的。我们知道,调用实例方法实际上有两种方式,可以通过类对象调用,也可以直接通过类名调用。通常我们习惯用类对象来调用类中的实例方法。但是如果你想用类调用实例方法,你不能这样做:

  class Study:def info(self):print( learn Python )#直接通过类名调用实例方法Study.info()运行上述代码,程序会报错如下:

  Traceback(最近一次调用last):文件“D:\python3.6\demo.py”,第5行,modulestudy . info()type error:info()缺少1个必需的位置参数:“self”,其中最后一行的错误消息告诉我们,调用info()类时缺少self参数。这意味着,与使用类对象调用实例方法不同,当直接通过类名调用实例方法时,Python不会自动将值传递给self参数。

  读者也要明白,self参数需要方法的实际调用者(类对象),但这里只提供类名,不能自动传递值。

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

  class Study:def info(self):print( learn Python )clang=Study()#直接通过类名调用实例方法Study.info(clang)再次运行程序。结果是:

  学习Python可以看到,通过手动将类对象clang传递给self参数,程序可以正确执行。其实这里调用实例方法的形式完全等同于clang.info()。

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

  class study:definfo(self):print(self, learn Python)#直接通过类名调用实例方法Study.info(张三)。运行结果是:

  张三学Python。可以看到,字符串“张三”被传递给了info()方法的self参数。显然,无论是使用self参数调用info()方法中的其他类方法,还是使用self参数定义新的实例变量,随机传递self参数都会导致程序崩溃。

  一般来说,Python允许使用类名直接调用实例方法,但是需要手动为方法的第一个self参数传递参数。这种调用方法的方式称为“未绑定方法”。

  用类的实例对象访问类成员的方法叫绑定方法,用类名调用类成员的方法叫未绑定方法。

  (此处引用)

  四。私有成员和公共成员私有成员不能在类外直接访问,但通常在类内访问和操作,或者通过调用对象的公共成员方法在类外访问,而公共成员可以在类内或外部程序中公开使用。从形式上讲,在定义类的成员时,如果成员名以两个下划线开头,但不以两个下划线结尾,则说明它是私有成员,否则就不是私有成员。Python没有为私有成员提供严格的访问保护机制。私有成员也可以在外部程序中通过一种特殊的方式“对象名”来访问。_ class name __xxx”,但是这样会破坏类的封装,所以不推荐。

  在Python中,以下划线开头的变量名和方法名有特殊的含义,尤其是在类的定义中。_xxx:受保护成员;__xxx__:系统定义的特殊成员;__xxx:私有成员,只能由类对象本身访问。子类对象不能直接访问这个成员,但是可以通过一种特殊的方式在对象外部访问它,比如“对象名”。_ class name __xxx "。注意:Python中没有严格意义上的私有成员。

  历史提交的图片或压缩文件

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

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