python类的继承和多态

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对象加上widthheight属性,以及一个只读属性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

时间: 2024-08-07 21:18:46

python类的继承和多态的相关文章

python之7-2类的继承与多态

类的继承的意思就如同父子关系一样,这个儿子继承了父亲的一切,但是在某些地方(属性)相同的时候,儿子的属性大于老子的属性(覆盖),最底层类,总会继承最接近它的那个类的属性init 类的多态总是和继承相连的,没有继承,就没有多态一说.一个子类的实例,它即属于这个子类,也属于父类,比如:父亲A和儿子B,儿子B即属于儿子类,也属于人类,但是它不属于父亲类 多态是面向对象语言的一个基本特性,多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式.在处理多态对象时,只需要关注它的接口即

python类的继承

Python 类的一些基本概念 Python中一切皆对象,声明变量函数等的过程实际上就是它们到内存中为对象分配的空间的连接.Python中的类同Java.C++一样,有自己的属性与方法.属于一个对象或类的变量被称为域. 域有两种类型--属于每个实例/类的对象或属于类本身,它们分别被称为实例变量和类变量. 类的变量 由一个类的所有对象(实例)共享使用.所有对象共用一个类变量的拷贝.对象的变量 由类的每个对象/实例拥有.因此每个对象有自己对这个域的一份拷贝. 类的方法与普通的函数只有一个特别的区别-

【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是一项庞大复杂的工程,如果没有面向对象功能势必会为开发带来一定的不便.不过幸好Lua中有table这样强大的数据结构,利用它再结合元表(metatable),我们便可以很方便地在Lua中模拟出类.继承和多态等面向对象编程具有的特性. 二.前提知识 按照惯例,我们还是先来熟悉一下必要的前提知识,以便方便

综合运用类、继承、多态,完成一个公司人员管理类层次结构(未完待续)

1.Target /*综合运用类.继承.多态等技术,完成一个公司人员管理类层次结构,用来描述人员信息等, 重载各种运算符,完成数据库内容的赋值.添加.工资增长等.*/ 2.Code #include <iostream> #include <cstring> #include <string> #include <cstdio> #include<cstdlib> #define TECH const string name, const int

实验6:类的继承和多态

南京信息工程大学实验报告 实验名称 类的继承和多态 实验日期 2018-5-29 得分 指导教师 耿学华 系 计软院 专业 计嵌+软嵌 年级 2017 级 班次 (1) 姓名 施昊阳 学号 20161334026 一.实验目的 理解类的继承和派生机制 掌握派生类的定义和使用 掌握派生类成员的标识与访问中同名覆盖原则.二元作用域分辨符和虚基类的用法 掌握派生类构造函数和析构函数的定义及调用次序 理解运算符重载的目的,掌握运算符重载函数的编写方法 二.实验准备 类的继承和派生 请结合第 7 章课件和

类的继承和多态细思

类的继承和多态细思 一.前言   类的继承和多态光靠概念和想象是不够的,我们需要编码去分析之,因此我使用代码来说明一些很难分清的东西. 二.分析代码 A类代码: package zyr.study.poly; public class A { public A(){ System.out.println("初始化A..."); } public String show(A obj) { return ("A and A"); } public String show

Python 面向对象编程——继承和多态

1.1   继承和多态 1.1.1   继承 当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). >>> class Animal(object): ...    def run(self): ...        print('Animal is running...') #父类 ... >>> class Dog(Ani

Inheritance Of Python 类的继承

Inheritance OOP三要素之一,继承 人类和猫都继承自动物类. 个体继承自父母,集成了父母的一部分特征. 在面向对象的世界中,从父类继承,就可以直接拥有弗雷德属性和方法,这样可以减少代码,多复用.子类可以定义自己的属性和方法. 类的继承 对于python来讲,所有的祖先都是object,所有的类都继承自object class Animal: def __init__(self, name): self._name = name @property def name(self): re

python大法好——继承、多态

1.继承 类的继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制. 通过继承创建的新类称为子类或派生类,被继承的类称为基类.父类或超类. 继承语法 class 派生类名(基类名) 在python中继承中的一些特点: 1.如果在子类中需要父类的构造方法就需要显示的调用父类的构造方法,或者不重写父类的构造方法.详细说明可查看:python 子类继承父类构造函数说明. 2.在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量.区别在于类中调用