Class(类)的基本概念:

类:将同一种具体事务的共同点抽象出来的表现,Python的类是一种可调用对象。

类中定义的有方法,变量,数据结构。

变量则是类属性本身是没有数据的,只有在实例化的时候将数据引入。

方法就是函数;是操作变量引用的数据的代码,可以知道方法是操作数据的,由于类中不包含数据,所以类无法调用方法,只有实例化引入数据成为实例(也称为对象)才可以调用方法。

对象的由来:

对象(也称为实例)本身是没有方法的,对象引用的方法是在类中定义的也叫类函数,或者叫接口。

同属一类实例化的对象,具有相同的功能。

类的执行场景:

当定义一个类时,类中的代码是不会执行的,只有在实例化时才会执行。 实例化过程中,类的方法不会执行,只有当实例调用方法的时候才会执行。

类对象是可调用对象,实例对象则是可以调用其中的方法。

类间关系:

依赖:一个类的方法操作另一个类的对象,如果另外一个类的对象没有被实例化出来,这个类就无法执行。

聚合:类A的对象包含类B的对象

继承:描述特殊与一般关系

面向对象的模型机制的3个原则:

封装(package)

隐藏实现方案细节,将代码及其处理的数据绑定在一起的一种编程机制,用于保证程序和数据不受外部干扰且不会被误用。

继承(Inheritance)

通过继承,子类对象可以获得父类对象的属性,一个深度继承的子类继承了类层次中它的每个祖先的所有属性。 (超类、父类、基类)都是同一个概念

在子类中调用一个属性的时候,如果在本类中没有,就会一直向上找父类。

多态性(Polymorphism)

允许一个接口被多个通用的类动作使用的特性,具体使用哪个动作与应用场合相关,相当于一个接口多个方法。

概念理解:对于某一个类而言,当传递给它的是不同的数据,却能完成多钟不同的运算。为了实现同一个目的,而定义同一个接口,背后却有多种不同的实现。 能够自动判断调用哪种实现的这种机制就叫做多态。

作用:降低程序的复杂性

开始一个类程序:

类方法中的这个self是用于标识实例本身的。 任何一个类方法都应该以self开始。

通过实例调用方法相当于调用所属类的方法来处理当前实例In [16]: ins1.setdata('hello python class')

In [17]: ins1.printdata()

hello python class

同等于这样写In [20]: TestClass.setdata(ins1,'aabbcc111222333')

In [21]: TestClass.printdata(ins1)

aabbcc111222333

在setdata方法调用之前,MyClass类不会把name属性附加到实例ins1上,当然也可以重载__init__创建构造器直接为实例提供。

Python 构造函数(别名:构造方法、构造器)

在Python中每一个类都有一个构造器方法__init__,构造方法会在实例化时从类名接受一个参数传给类方法,这样就可以直接在类初始化时给方法传参。

构造器在构造实例时传参,直接构造实例属性。

构造器是创建实例属性最便捷的方式

__varname__ : 这类方法在某种场景下,Python解释器会自动调用它们。

当执行 a + b 程序会自动调用 a.__add__(b)

当执行 l2 = [1,2,3] 程序会自动调用 list.__init__()

析构:用于销毁一个实例,解释器会自动垃圾回收,所以一般很少用析构函数。

获取类中的所有可用属性和可用方法,可以使用__dict__类的字典属性,或者内置函数dir。

-------------------------------------------------------------------------------------------

获取实例属性和方法

方法的可用变量

实例变量:指定变量名称及实例自身进行引用 self.变量名

局部变量:方法内部创建的变量,可直接使用

类变量(也称静态变量):通过指定变量名与类名进行引用

全局变量:直接使用

类的继承

继承描述了基类的属性如何"遗传"给子类,子类可以继承它的基类的任何属性,包括数据属性和方法,一个未指定基类的类,其默认有一个名为Object的基类,Python允许多重继承能并行继承多个父类。

实现子类继承构造方法

Python中几乎所有属性的获取都可以使用 "object.attribute",的格式。

此表达式会在Python中启动搜索—— ——搜索连续的树

Class 语句会产生一个类对象,对Class的调用会创建实例,实例会自动连接至创建了此实例的类。

类连接至其超类的方式

继承就是由下至上,由左至右搜索此树来寻找属性名称所出现的最低的位置。

继承方法的专用化

继承会先在子类寻找变量名,然后才查找超类,因此,子类可以对超类的属性覆盖来取代继承而来的方法。也可以通过已覆盖的方法回调超类来扩展超类的方法

类、实例和其他对象的内建函数

issubclass()

布尔函数,判断一个类是否是另一个类的子类In [38]: issubclass(Two_Class,One_Class)

Out[38]: True

isinstance

判断一个对象是否为一个类的实例In [42]: isinstance(ins2,Two_Class)

Out[42]: True

hasattr()

判断一个对象(实例)是否拥有指定的属性In [46]: hasattr(ins2,'data_one')

Out[46]: True

In [47]: hasattr(ins2,'data_two')

Out[47]: True

python类的构造方法名称_Python的面向对象、Class 概念与使用相关推荐

  1. python类的构造方法名称_搞懂Python的类和对象名称空间

    代码块的分类 python中分几种代码块类型,它们都有自己的作用域,或者说名称空间:文件或模块整体是一个代码块,名称空间为全局范围 函数代码块,名称空间为函数自身范围,是本地作用域,在全局范围的内层函 ...

  2. python类的构造方法是_Python类中属性和构造方法的区别?

    #看代码 class A: logo = 'Logo A' class B: def __init__(self): self.logo = 'Logo B' a = A() b = B() prin ...

  3. python 类继承 父类初始化_python之子类继承父类时进行初始化的一些问题

    直接看代码: classPerson:def __init__(self): self.name= "jack" classStudent(Person):def __init__ ...

  4. python类定义的讲解_python类定义的讲解

    Python中的类属性和对象属性的区别详解 类属性: class Employee(object): emCount=0 def __init__(self,name,salary): self.na ...

  5. python 类中静态变量_Python中的类或静态变量

    python 类中静态变量 Python类/静态变量 (Python Class / Static Variables) Class or Static variables are class-rel ...

  6. python类初始化详解_python类中super() 的使用解析

    描述 super() 函数是用于调用父类(超类)的一个方法. super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO).重复 ...

  7. python怎么定义名称_python 之 面向对象基础(定义类、创建对象,名称空间)

    第七章面向对象 1.面向过程编程核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 优点:复杂的问题流 ...

  8. python类定义的讲解_python面向对象、自定义类等使用实例讲解

    python 面向对象相对别的语言来说缺少两个功能: 1.python不具备重载,重载是指在同一个类中,使得方法有相同的名称,但是有不同的参数列表,但由于python函数具有强大的参数处理功能,因此这 ...

  9. python类和对象介绍_Python开发基础-Day17面向对象编程介绍、类和对象

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

最新文章

  1. 华为某员工欲离职,看到年终奖后犹豫了:再干一年吧!
  2. 【并发编程】volatile简单使用
  3. 混合图 (Standard IO)
  4. jvm性能调优实战 - 24模拟因动态年龄判断对象进入老年代的场景
  5. Ecplise切换项目里面的包的显示样式
  6. java调用其他方法中的变量_Uipath中调用Python的方法
  7. PHP增删查改性能优化
  8. linux网络编程系列-select和epoll的区别
  9. 《App后台开发运维与架构实践》第2章 App后台基础技术
  10. Vert.x MySQLClient体验
  11. 图灵奖公布 | 高性能计算先驱、为超算铺平道路的Jack Dongarra获奖
  12. Php sql server2005,phpmssqlserver2005数据库连接类
  13. 常见的Java开发框架有哪些?
  14. ocx在我indows7无法注册
  15. Android之apk优化
  16. HTML5学习总结(2)——header/nav/footer/article/section/aside
  17. Unity3D 使用UGUI实现公告牌
  18. linuxptp分析
  19. 浅谈 SIM-OTA
  20. VC错误——stack overflow

热门文章

  1. wireshark_Couldn’t run /usr/sbin/dumpcap in child process: Permission denied
  2. 不必仰望他人,用自己的方式活着就好
  3. [转]微软SerialPort秘籍[SerialPort为什么死锁程序的分析]
  4. Perl多线程ping加端口扫描
  5. 第十三章 第六节 本章小结
  6. PowerDesigner模型设计1
  7. Linux之dirname与basename命令
  8. sendevent/getevent模拟Power键
  9. PCM data flow - 2 - ASoC data structure
  10. Ubuntu 14.04报错: error while loading shared libraries libc++.so cannot open shared object file解决