违反里氏替换原则(Liskov Substitution Principle, LSP)的经典案例是圆-椭圆问题,有时也称为正方形-长方形问题。
乍一看,您似乎可以先定义一个 Rectangle 类,包含属性 h 和 w(高和宽),再定义一个继承自 Rectangle 的 Square 类。毕竟,正方形"是"长方形的一种!
Rectangle
h
w
Square
但可惜,这种直觉并不能直接应用到面向对象设计上。
本练习是课程的一部分
通过完成这段示例代码来试试这个练习。
# Define a Rectangle class ____ # Define a Square class ____
本章将介绍什么是面向对象编程(OOP),它与过程式编程有何不同,以及如何应用。您将定义自己的类,并学习如何创建方法、属性和构造函数。
继承和多态是 OOP 的核心概念,可实现高效一致的代码复用。学习如何从类继承、自定义和重定义方法,并复习类级数据与实例级数据的区别。
本章将学习如何让存储相同数据的对象被视为相等,如何定义并自定义对象的字符串表示,甚至如何创建新的错误类型。通过交互式练习,您将进一步自定义类,使其更像标准的 Python 数据类型那样工作。
如何为继承设计类?Python 是否有私有属性?能否控制属性访问?在学习类设计的最佳实践时,您将找到这些问题(以及更多)的答案。
当前练习