6面向对象程序设计

6.1类的定义与使用

  • class关键字定义类,之后是一个空格,接下来是类名,
  • 如果派生自其他基类
    • 把所有基类放到一对括号中并使用逗号分隔,
    • 然后是一个冒号,最后换行并定义类的内部实现。
  • 类名首字母一般大写

在这里插入图片描述

  • 定义类后,就可用来实例化对象,
  • 并通过“对象名.成员”来访问其中的数据成员或成员方法。

在这里插入图片描述

在这里插入图片描述

  • Python提供关键字pass,执行时什么也不会发生,
    • 用在类和函数的定义中或者选择结构中,表示空语句
  • 如果暂时没确定如何实现某功能,
    • 或提前为以后的软件升级预留一点空间,
    • 可用pass“占位”。

  • 和定义函数一样,在定义类时,也可用三引号为类进行注释

在这里插入图片描述

6.2数据成员与成员方法

6.2.1私有成员与公有成员

  • 私有成员在类的外部不能直接访问,
    • 一般是在类的内部访问和操作,
    • 或在类的外部通过调用对象的公有成员方法来访问,
  • 公有成员是可以公开使用的,
    • 既可在类的内部访问,也可以在外部程序中使用。

  • 如果成员名以两个(或更多)下画线开头但是不以两个(或更多)下画线结束则表示是私有成员,否则就不是私有成员。
  • “对象名._类名__xx”也可在外部程序中访问私有成员,
    • 但这会破坏类的封装性,不建议

在这里插入图片描述

  • “.”是成员访问运算符,可访问命名空间、模块或对象中的成员,在
    IDLE、 Eclipse+ Pydev、 WINGIDE、 Pycharm或其他 Python环境中,对象或类名后面加上“.”,都自动列出其所有公开成员
  • “.”后再加一个下画线,则列出该对象或类的所有成员,包括私有成员
  • 也可dir()査看指定对象、模块或命名空间的所有成员。

在这里插入图片描述

  • 一个下画线开头,保护成员,
    • 只有类对象和子类对象可访问这些成员,
    • 在类的外部一般不建议直接访问:
    • 模块中用一个或多个下画线开头的成员不能用from module import*'导入,除非在模块中使用__all__变量明确指明这样的成员可被导入
  • 前后各两个下画线,系统定义的特殊成员
  • 以两个或更多下画线开头但不以两个或更多下画线结束,表示私有成
    员,只有类对象自己能访问,子类对象也不能访问该成员,但在对象外部

6.2.2数据成员

  • 属于对象的数据成员在构造方法init()中定义,
    • 也可以在其他成员方法中定义,
    • 在定义和在实例方法中访问数据成员时以self作为前缀
  • 属于类的数据成员是该类所有对象共享的,不属于任何一个对象,
    • 在定义类时这类数据成员一般不在任何一个成员方法的定义中。
  • 在主程序或类的外部,对象数据成员属于实例(对象),只能通过对象名访问;
  • 类数据成员属于类,通过类名或对象名访问。

  • 利用类数据成员的共享性,可实时获得该类的对象数量,且可控制该类创建的对象最大数量

在这里插入图片描述

6.2.3成员方法、类方法、静态方法、抽象方法

发布了589 篇原创文章 · 获赞 300 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/zhoutianzi12/article/details/105574938