Python类继承和多态原理解析

作者:知一以天 时间:2023-04-30 17:31:38 

这篇文章主要介绍了python类继承和多态原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了。之前学C++的时候就把类、对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象。

就像说的,类有三个特征:封装、继承、多态。

1、封装:类封装了一些方法,可通过一定的规则约定方法进行访问权限。

C++中的成员变量有public、private、ptotected。

在python中,默认的成员变量都是public的,如果成员变量前面是加两个下划线,表示该成员变量是私有的。并且private类不能被继承类引用,并且不允许直接访问。

2、继承:在定义一个类的时候可以从当前有的类中进行继承。

python是允许多继承的,并且在子类中拥有父类所有的成员变量和方法,为了缓解代码中的冗余,子类在父类的基础上增加的成员变量可以如下修改。


class Person(object):
 def __init__(self,name,sex):
   self.name = name
   self.sex = sex

class Child(Person):             # Child 继承 Person
 def __init__(self,name,sex,mother,father):
   Person.__init__(self,name,sex)    # 子类对父类的构造方法的调用
   self.mother = mother
   self.father = father

May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)

3、多态:当子类继承父类之后,成员方法既可以重写也可以不重写。当调用的时候只要保证新方法编写正确,不用管原来的代码。

对扩展开放(Open for extension):允许子类重写方法函数
对修改封闭(Closed for modification):不重写,直接继承父类方法函数
python是一种动态语言,动态语言是在运行的时候确定数据类型的语言。变量在使用前不用声明,通常变量的类型是被复制的那个值的类型。

静态语言是在编译的时候变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前鼻血声明数据类型。

在类中,当要对成员变量进行约束的时候可以使用@property,python内置的@property装饰器是负责把一个方法变成属性调用

在实例属性操作的时候,就知道该属性很可能不是直接暴露的,而是通过getter和setter方法来实现的。还可以定义只读属性,只定义getter方法不定义setter就是一个只读属性

请利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution:


class Screen(object) :
 @property
 def width(self) :
   return self._width

@width.setter
 def width(self,valuer) :
   if not isinstance(valuer,int):
     raise ValueError('score must be an integer')
   if valuer < 0 :
     raise ValueError('score must over zero')  
   self._width=valuer

@property
 def height(self) :
   return self._height

@height.setter
 def height(self,number) :
   if not isinstance(number,int) :
     raise ValueError('score must be an integer')
   if number < 0 :
     raise ValueError('score must be an zero')
   self._height = number

@property
 def resolution(self):
   return self._width * self._height
s=Screen()
s.width = 1024
s.height = 768
print(s.resolution)

来源:https://www.cnblogs.com/chargeworld/p/12261609.html

标签:python,类,继承,多态
0
投稿

猜你喜欢

  • asp如何定义参数?

    2010-05-16 15:20:00
  • Python的10道简单测试题(含答案)

    2021-12-28 03:57:24
  • Mysql 5.7 新特性之 json 类型的增删改查操作和用法

    2024-01-24 23:45:53
  • 网页在IE6中不能打印之谜

    2008-12-12 13:08:00
  • 详解Python如何使用Netmiko进行文件传输

    2021-06-20 19:49:17
  • MyBatis简介与配置MyBatis+Spring+MySql的方法

    2024-01-26 04:34:26
  • mysql root密码的重设方法(亲测可用)

    2024-01-25 13:37:18
  • 古老的问题:清除浮动

    2009-02-12 11:21:00
  • ASP分页函数

    2009-07-06 12:41:00
  • python简单的函数定义和用法实例

    2022-10-07 12:35:03
  • python如何快速生成时间戳

    2022-10-26 08:15:41
  • Pandas分组与排序的实现

    2022-11-27 14:13:18
  • Mysql全局ID生成方法

    2023-07-02 13:59:53
  • Design IT.(2),关于好设计

    2008-09-08 12:44:00
  • MySQL数据库主机127.0.0.1与localhost区别

    2024-01-17 17:54:24
  • matlab中imadjust函数的作用及应用举例

    2021-09-12 21:34:06
  • python递归调用中的坑:打印有值, 返回却None

    2023-11-02 23:07:42
  • Python运行不显示DOS窗口的解决方法

    2021-01-18 08:06:16
  • 分析Python的Django框架的运行方式及处理流程

    2022-03-13 14:47:50
  • python中pd.Series()函数的使用

    2023-10-04 08:28:05
  • asp之家 网络编程 m.aspxhome.com