1. 1.类的定义
  2. 定义是用过class关键字
  3. class Student(object):
  4. pass
  5. class 后面紧接着是类名,即Student,类名通常是大写开头的单词,
  6. 紧接着是(object),表示该类是从哪个类继承下来的。如果没有合适
  7. 的继承类,就使用object类,这个是所有类最终都会继承的类。
  8.  
  9. 定义好了Student类,就可以根据Student类创建出Student的实例,
  10. 创建实例是通过类名+()实现的
  11.  
  12. res = Student()
  13. print(res)#<__main__.Student object at 0x1035d35c0>
  14. print(Student)#<class '__main__.Student'>
  15.  
  16. 可以看到,res指向的是一个Student实例,而Student本省则是一个类。
  17.  
  18. 可以自由的给实例变量绑定属性,eg. res绑定一个name属性
  19. res.name = 'Jake'
  20. print(res.name)#Jake
  21.  
  22. 由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们
  23. 认为必须绑定的属性强制填写进去,通过定义一个特殊的__init__方法
  24. 在创建实例的时候,把nameagesex等属性绑定上去。
  25. def __init__(self, name, age, sex):
  26. self.name = name
  27. self.age = age
  28. self.sex =sex
  29. 注:__init__是双下划线
  30.  
  31. 注意:
  32. __init__方法第一个参数永远是,self。表示创建的实例本身,
  33. 因此,在__init__方法内部,就可以把各种属性绑定到self
  34. 因此,self就指向创建的实例本身。
  35. 有了__init__方法,在创建实例的时候,就不能传入空的参数了
  36. 必须传入与__init__方法匹配的参数,但self不需要传,Python
  37. 解释器自己会把实例变量传进去。
  38.  
  39. res = Student('Jake', 60, '男')
  40. print(res.age)#60
  41.  
  42. 和普通方法相比,在类中定义的函数只有一点不同,就是第一个参数永远
  43. 都是self,并且调用时,不用传递参数。除此之外,与类的方法与普通方
  44. 法没有什么区别。
  45.  
  46. 总结:
  47. __dict__ : 可查询类和对象中内容,并以字典形式返回。
  48.  
  49. 1.类名+() ---->实例化一个对象
  50. 2.这个时候会自动执行__init__方法,并且将对象传给__init__self参数
  51. 3.给对象封装相应的属性。
  52.  
  53. 2.数据封装
  54. 面向对象编程的一个重要的特点就是数据封装。
  55. 在上面的Student类中,每个实例都拥有各自的name,age,sex这些数据。
  56. 既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从
  57. 外面的函数去访问,可以直接在Student类的内部定义访问数据的函数,
  58. 这样,就把“数据”给封装起来了。这些封装数据的函数是和Student类本
  59. 身是关联起来的,我们称之为类的方法:
  60.  
  61. class Student(object):
  62. def __init__(self, name, age, sex):
  63. self.name = name
  64. self.age = age
  65. self.sex =sex
  66.  
  67. def print_message(self):
  68. print('%s:%s:%s' % (self.name, self.age, self.sex))
  69.  
  70. res = Student('Jake', 60, '男')
  71. res.print_message()#Jake:60:男
  72.  
  73. 这样一来,我们从外部看Student类,就只需要知道,创建实例需要给出name,age,sex
  74. 而如何打印,都是在Student类的内部定义的,这些数据和逻辑被“封装”起来了,调用很
  75. 容易,但却不用知道内部实现的细节。封装的另一个好处就是,可以给Student类增加新
  76. 的方法。
  77.  
  78. 总结:
  79. 1.类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都是
  80. 互相独立的,互不影响。
  81. 2.方法就是与实例绑定的函数,和普通函数不同,方法可以直接返回实例的数据。
  82. 3.Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然他们
  83. 都是同一类的不同实例,但拥有的变量名称都可能不同。

Python面向对象之类和实例的更多相关文章

  1. Python面向对象-类、实例的绑定属性、绑定方法和__slots__

    绑定属性 从之前的文章中,我们知道python是动态语言——实例可以绑定任意属性. 那如果实例绑定的属性和类的属性名一样的话,会是什么情况呢? >>> class Student(o ...

  2. python面向对象--类和实例的认识

    '''1.数据属性 2.函数属性''' #创建一个类class Chinese: "这是一个中国人的类" #类属性 money=4000 #注意类和对象均用点来访问自己的属性 de ...

  3. Python学习(七)面向对象 ——类和实例

    Python 面向对象 —— 类和实例 类 虽然 Python 是解释性语言,但是它是面向对象的,能够进行对象编程.至于何为面向对象,在此就不详说了.面向对象程序设计本身就很值得深入学习,如要了解,请 ...

  4. Python面向对象关系

    首先了解一下Python面向对象中类型-实例和父类-子类的关系.下面的一些规则很有用. 当我们介绍许多不同的对象时,我们只用了两种关系(图4.1 关系): 是一类(is a kind of)(实线): ...

  5. Python 进阶_OOP 面向对象编程_实例属性和方法

    目录 目录 构造器和解构器 构造器 __init__ 真构造器 __new__ 解构器 __del__ 实例方法 Python 中的 抽象方法 实例属性 查看实例属性 实例属性和类属性的区别 访问不可 ...

  6. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  7. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  8. python面向对象进阶(八)

    上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  9. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

随机推荐

  1. Hadoop- MapReduce分布式计算框架原理

    分布式计算: 原则:移动计算而尽可能减少移动数据(减少网络开销) 分布式计算其实就是将单台机器上的计算拓展到多台机器上并行计算. MapReduce是一种编程模型.Hadoop MapReduce采用 ...

  2. 大数据- 自定义Log4j日记

    1.新建一个java project,在src下新建一个lib文件夹和 rescources 文件夹,resources文件夹不能命名错误. 点击File——>project Structure ...

  3. ES 搜索结果expalain 可以类似数据库性能调优来看排序算法的选择

    When we run a simple term query with explain set to true (see Understanding the Score), you will see ...

  4. app测试点-1

    一.安全测试 1.软件权限 1)扣费风险:包括短信.拨打电话.连接网络等. 2)隐私泄露风险:包括访问手机信息.访问联系人信息等. 3)对App的输入有效性校验.认证.授权.数据加密等方面进行检测 4 ...

  5. 插件_热部署_JRebel

    一.License Server 1.运行反向代理 GitHub地址:https://github.com/ilanyu/ReverseProxy 下载地址:ReverseProxy_windows_ ...

  6. erlang的map基本使用

    maps 适用于需要在运行时改变数据结构(record则不行)的场景,可以动态增加key 数据量不宜过大,具体多大没有实际数据, maps from_list  如果list表很长,则相应的耗时时间会 ...

  7. 【Shell】通配符与特殊符号

    ——来自<鸟哥的Linux私房菜> 在 bash 的操作环境中还有一个非常有用的功能,那就是通配符 (wildcard) ! 我们利用 bash 处理数据就更方便了!底下列出一些常用的通配 ...

  8. AtCoder Beginner Contest 104

    A - Rated for Me Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement A ...

  9. 洛谷 U6931 灯光

    题目背景 明天就是校园活动了,小明作为场地的负责人,将一切都布置好了.但是在活动的前几天,校园里的灯却都坏掉了,无奈之下,只好再去买一批灯.但是很遗憾的是,厂家看马上要过年了,就没有在进货了,现在只剩 ...

  10. Redis 客户端安装与远程连接图解

    Linux环境:Centos 6.8 Redis服务端版本:3.2.6 Redis客户端下载链接:https://redisdesktop.com/download 省略Linux系统安装Redis教 ...