封装

封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

 class dog(object):
nationality='ch'#公有属性
def __init__(self,name,food,leven):#构造函数,方法,初始化方法
self.name=name #实例指针,指向 属性 对象成员
self.food=food
self.leven=leven
self.__haot='hhh'#前面双下划线定义为私有属性 def get_hoat(self):#定义方法为私有属性提供接口
return self.__haot
def say(self):#类中的方法 都是公有方法
print('hello,my name is ',self.name)
def eat(self,foods):
print("my food is %s,but my eat %s"%(self.food,foods))
def leve(self):
print("my leve is ",self.leven) def __del__(self):
print("删除中...") d=dog("liili",'gl',"")
d.say()
d.eat('kkk')
d.leve()
print(d.get_hoat())#通用接口访问私有属性 print(d._dog__haot)#强制访问私有属性
print(d.nationality) dog.nationality='chan'
print(d.nationality)
d.nationality='us'
print(d.nationality)
 class F1(object):
def __init__(self,n):
self.N = n
print('F1') class F2(object):
def __init__(self,arg1):
self.a = arg1
print('F2') class F3(object):
def __init__(self,arg2):
self.b = arg2
print('F3') c1=F1('yjj')
c2=F2(c1)#可以封装一个对象
c3=F3(c2)#可以封装多层的对象
print(c3.b.a.N)#通过 . 调用

继承

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”。

被继承的类称为“基类”、“父类”或“超类”。

 class studen(object):#定义类  学生 基类
def __init__(self,name,age,clas):#名字,年龄,班级
self.name=name
self.age=age
self.clas=clas
def talk(self):
print('%stalk one.....'%self.name)
def walk(self):
print('%s walk....'%self.name)
def info_user(self):
print('name is %s, age is %s,clas is %s'%(self.name,self.age,self.clas)) class clas_one(studen):#继承studen
def __init__(self,name,age,clas,score):#重构构造方法
#studen.__init__(self,name,age,clas)#先继承, 再重构
super(clas_one,self).__init__(name,age,clas)#新式类
self.score=score#增加新对象成员
def talk(self):#重写方法
print('is new talk ,%s'%self.name)
def score_info(self):#新增加 子类方法
print(self.score,'分') p=clas_one('学生一',36,'一年三班',178)
p.talk()
p.score_info()
 class F1(object):
def __init__(self):
print('F1')
def a1(self):
print('F1a1')
def a2(self):
print('F1a2') class F2(F1):
def __init__(self):
print('F2')
def a1(self):
self.a2()
print('F2a1')
def a2(self):
print('F2a2') class F3(F2):
def __init__(self):
print('F3')
def a11(self):
print('F3a1')
def a2(self):
print('F3a2') obj=F3()
obj.a1()#调用时,self指向当前对象

多态

 class Animal(object):
def __init__(self,name):
self.name=name
def talk(self):
raise NotImplementedError('提示出错') class c(Animal):#继承Animal
def talk(self):
print('%s 1111'%self.name) class d(Animal):#继承Animal
def talk(self):
print('%s 2222'%self.name) def talk_all(obj):#用函数来模拟多态
obj.talk() c1=c('猫')
d1=d("狗") talk_all(c1)
talk_all(d1)

python第三十一天-----类的封装、继承,多态.....的更多相关文章

  1. java类的封装 继承 多态

    1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ pub ...

  2. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  3. 孤荷凌寒自学python第三十一天python的datetime.timedelta模块

     孤荷凌寒自学python第三十一天python的datetime.timedelta模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.timedelta模块是一个表示 ...

  4. python第三十一课--递归(2.遍历某个路径下面的所有内容)

    需求:遍历某个路径下面的所有内容(文件和目录,多层级的) import os #自定义函数(递归函数):遍历目录层级(多级) def printDirs(path): dirs=os.listdir( ...

  5. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

  6. 浅谈学习C++时用到的【封装继承多态】三个概念

    封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...

  7. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

    Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...

  8. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

  9. Java基础——面向对象(封装——继承——多态 )

    对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...

随机推荐

  1. nrf52832 SDK 15.3.0 Flash 操作

    debug中遇到的问题: 1,写入数据,读出来不对 2,看之前被人写的代码发现,读flash直接用的标准C库函数:memcpy,但是,写用的专门的flash写接口.所以,我这里两个疑问: A,写fla ...

  2. python之斐波那契数列递归推导在性能方面的反思

    在各种语言中,谈到递归首当其冲的是斐波那契数列,太典型了,简直就是标杆 一开始本人在学习递归也是如此,因为太符合逻辑了 后台在工作和学习中,不断反思递归真的就好嘛? 首先递归需要从后往前推导,所有数据 ...

  3. C# sqlhelper 整理

    以下代码是参考几个不同人的写法总结写成的,肯定还有很大的优化空间,暂存该版本:有建议的欢迎提出: using System; using System.Collections.Generic; usi ...

  4. 从零开始学 Web 之 HTML5(二)表单,多媒体新增内容,新增获取操作元素,自定义属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  5. SQL 必知必会·笔记<10>联结表

    可伸缩(scale) 能够适应不断增加的工作量而不失败.设计良好的数据库或应用程序 称为可伸缩性好(scale well). 联结(JOIN) 联结(JOIN)是一种机制,用来在一条SELECT 语句 ...

  6. SQL 必知必会·笔记<2>检索和排序数据

    1.检索数据 使用SELECT 检索表数据,必须至少给出两条信息——想选择什么, 以及从什么地方选择. 检索不同的值 使用DISTINCT关键字,检索不同的值,使用示例: SELECT DISTINC ...

  7. quartz配置参数org.quartz.jobStore.misfireThreshold含义解释

    配置定时任务参数 quartz.properties文件时 需要配置jobStore的超过时间数 默认为60秒(这里单位为毫秒) org.quartz.jobStore.misfireThreshol ...

  8. visual studio code 在 mac 下按 F12无效

    vsc 默认通过 F12可以查看定义(Go to Definition),可以查看类或方法的定义: 但是在 mac 环境下,有时按 F12并不生效,但是菜单栏的 Go 选项是被启动的,此时需要进行 2 ...

  9. PHP打印指定日期

    打印某一日期的前一天 echo date("Y-m-d",(strtotime("2009-01-01") - 3600*24)); (1)打印明天此时的时间戳 ...

  10. 利用shell显示wordcount功能

      Shell脚本编程是Linux系统最为核心的技术之一,它能够利用简单的命令来实现一些复杂的功能,同时,由于Linux提供了很多文本处理命令,如grep(grep family), tr, sed, ...