【查漏补缺】Python面向对象61~80

作者: TensorFlow开发者 | 来源:发表于2019-03-02 21:10 被阅读34次

61.对象的__str__方法,默认下会返回:创建该对象的类名,以及当前对象在内存中的地址(16进制的)。

62.如果我们需要定制打印对象变量时的默认打印信息,就可以重新实现__str__方法。特别注意:该__str__方法内部必须返回一个字符串才行,否则报错!

63.Python能够自动地将一对括号()中的代码连接在一起,即使开发过程中为了代码美观而强制换行,也是一起的。

64.尽管Python支持,但不推荐在类的外部又给该类的对象临时添加属性。

65.在类的__init__方法中,如果想让该类的对象有某些属性,但又不知此时该属性的初始值,则可以赋值None。None关键字表示什么也没有,是一个空对象,是一个特殊的常量。可以将None赋值给任意一个变量。

66.运算符is,用来判断两个变量所指向的内存地址是否相同。例如:a is b,即:a是b吗?也即:a和b指向的内存地址是一样的吗?

运算符==,判断的是两个变量所指向内存地址中,存储的数据是否相同。c==d,即:c,d所指向内存地址中,存储的数据是否相等。

67.针对None的比较,尽管用==判断运行效果没有区别,Python是建议使用is判断的。

68.私有属性或私有方法:在定义私有属性或私有方法时,只需要在属性名或方法名前增加两个下划线__,就定义好了,这样在类的外界和子类就无法直接访问该类私有属性或私有方法了。

如果类的外界硬要访问私有属性或私有方法,则会报错。

69.在Python中,并没有真正意义的私有。

70.Python中,解释器针对私有属性或私有方法的名称是做了一些特殊处理,使得外界无法访问到。处理方式即:在名称前加上了:_类名。所以私有属性或私有方法的完整名称是:_类名+私有属性或私有方法名。_类名__名称。

尽管能访问了,但既然是私有的,就不推荐这么访问。

71.子类是不能直接访问父类中的私有属性和私有方法。子类可以通过父类提供的公有的方法来间接访问父类的私有属性和私有方法。

72.Python中的MRO(方法搜索顺序):类中有一个内置属性__mro__,返回一个元组,在该元组中就可以看到方法搜索顺序。

MRO主要用于在多继承时判断方法、属性的调用查找顺序。如果查到,就不再继续查找,而是直接调用。

73.Python3中,默认所有类都是继承自object类的。

Python2.x中,如果没有指明父类,则是不会有默认父类object的。

74.每个对象都有自己独立的内存空间,保存着该对象的属性。

75.同一个类多个对象的同一方法,在内存中只有一份。在调用方法时,需要把对象的引用传到方法内部。

76.类是一个个特殊的对象,类对象。在程序运行时,类也是要加载到内存中的。类中定义的对象方法,正是保存到类内存中了。在程序运行时,类对象在内存中只有一份。

77.类中,除了可以封装实例属性和实例方法,还可以封装类属性和类方法。

78.实例属性通常都是是在__init__中设计的,类属性直接在类中方法外设计。

79.obj.xxx获取属性值,先在对象内部查找对象属性,查找不到再去类属性中查找。

80.obj.xxx=yyy为属性赋值,只会为对象添加一个属性xxx,而不会影响到类属性xxx的值。这是一个要特别注意的坑!

相关文章

  • 【查漏补缺】Python面向对象61~80

    61.对象的__str__方法,默认下会返回:创建该对象的类名,以及当前对象在内存中的地址(16进制的)。 62....

  • Java入门教程-面向对象查漏补缺

    1. 面向对象查漏补缺 1.1. this关键字(重点掌握) 什么是this:表示当前对象 this主要存在于两个...

  • 【查漏补缺】Python函数和面向对象41~60

    41.如果函数返回的结果是元组,则小括号()是可以省略的,也是Python推荐的做法。 42.如果函数返回的结果是...

  • 【Android面试查漏补缺】之事件分发机制详解

    前言 查漏补缺,查漏补缺,你不知道哪里漏了,怎么补缺呢?本文属于【Android面试查漏补缺】系列文章第一篇,持续...

  • JavaScript——对象(查漏补缺)

    说到JavaScript,我们就总是会提到对象,说到对象我们就会提到原型继承,这是我们接触JavaScript时经...

  • 【justforme】python查漏补缺

    数据类型(也是对象来的) 整数(0xffe3)、浮点数(1.23e5==1.23*10的5次方)、字符串、True...

  • python查漏补缺-基础

    最近刷题感觉一些简单的概念看似很熟悉,实际上还有很多旮旯需要掌握,本篇不做笼统的汇总,仅针对一些易混淆概念之间的区...

  • 查漏补缺

    如果想让HTML5标签兼容低版本浏览器的话,可以使用 html5shiv js来实现。注意:一定要把它引入到前面。...

  • 查漏补缺

    图文环绕和浮动 最初的CSS只是用来写文章,熟练使用float和clear两个属性来布局: float属性:指定一...

  • 查漏补缺

    1.js字符串转换成数字与数字转换成字符串的实现方法https://www.2cto.com/kf/201612/...

网友评论

    本文标题:【查漏补缺】Python面向对象61~80

    本文链接:https://www.haomeiwen.com/subject/mtrduqtx.html