新手入门Python核心笔记四:面向对象、执行环境、正则表达式、网络编程【我从没见过你 但我懂你】
日期: 2021-04-29 分类: 个人收藏 504次阅读
第十三章面向对象编程
在 Python 中,面向对象编程主要有两个主题,就是类和类实例。
利用 class 关键字创建一个类:
class MyNewObjectType(bases): #bases 参数用于继承的父类
‘define MyNewObjectType class’
Class_suite
object 是“所有类之母”,若未指明父类,则object 将作为默认的父类。
创建一个实例的语法:(注意:没有使用 new,Python 根本就没有 new 这个关键字)
myFirstObject = MyNewObjectType()
添加类方法:
class MyDataWithMethod(object): #定义类
def printFoo(self): #定义方法
print ‘You invoked printFoo()’
你可能注意到 self 参数,它在所有的方法声明中都存在。并且必须是第一个参数。这个参数代表实例对象本身,当你调用方法的时候由解释器悄悄地传递给方法,而不需要你自己传递 self。
init ()方法:类似于一个构造器,但不能说是一个构造器(因为 Python 没有使用
new),它在创建一个新的对象时被调用,完成一个初始化工作。
类、属性和方法的命名方式:
类:通常大写字母打头。这是标准惯例。有助于识别类。属性:小写字母打头+ 驼峰,使用名词作为名字。
方法:小写字母打头+ 驼峰,使用谓词作为名字。
在 Python 中,声明与定义类是没有什么区别的,因为它们是同时进行的,定义(类体) 紧跟在声明(含class 关键字的头行)和可选(但总是推荐)的文档字符串后面。
Python 不支持纯虚函数(如 C++)或抽象方法(如 Java)。
Python 严格要求,没有实例,方法是不能被调用的。方法必须绑定(到一个实例)才能被直接调用。
dir(class_name): 返回类对象的属性的一个名字列表
class_name. dict
: 返回的是一个字典,key 是属性名,value 是数据值
init ()方法不应该返回任何对象,即,它应该返回 None,否则将产生 TypeError。
实例属性 VS 类属性:
类属性跟实例无关。这些值像静态成员那样被引用,即使在多次实例化中调用类, 类属性的值都不会改变。
子类可以通过继承覆盖父类的方法。类似,如果在子类中覆盖了了 init ()方法,那么基类的 init ()就不会被自动调用了。
同 C++一样,Python 支持多继承。但要处理好两个方面:
- 要找到合适的属性
- 重写方法时,如何调用对应父类以“发挥他们的作用”,同时,在子类中处理好自己的义务
vars()内建函数与 dir()相似,知识给定的对象都必须有一个 dict 属性。vars()返回一个字典,包含了对象存储于其 dict 中的属性(键)和值。
精华推荐