封装

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

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

 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. android底部菜单栏的编写

    开发工具android stdio,组件Radio Button 1.新建空项目DDDD 2.将事先准备好的图标复制到对应的文件夹中(如图),这五个文件夹都要拷进去,图标文件http://pan.ba ...

  2. Myeclipse--jBPM4.3插件

    http://www.baidupcs.com/file/c7f3b8fc57b056567b37d081b1bcd21e?xcode=3966699596a0e8ec88581bd8407457f9 ...

  3. tensorflow 导入gfile模型文件

    with tf.gfile.GFile(os.path.join(self.model_dir, 'ner_model.pb'), 'rb') as f: graph_def = self.tf.Gr ...

  4. 面试:C++工厂模式实现

    #include <iostream> enum CTYPE {PRODUCTA,PRODUCTB}; class Product{ public: ; virtual ~Product( ...

  5. 逆向知识之CS1.6辅助/外挂专题.1.实现CS1.6主武器副武器无限子弹

    逆向知识之CS辅助/外挂专题.1.实现CS主武器副武器无限子弹 PS: 相信大家CS1.6这类的FPS应该玩过.现在我们通过外挂手法.讲解逆向的本质.以及应用. 关于CS1.6的下载.网络百度下载即可 ...

  6. 【详解】换一个角度看Socket的数据读写

    前言 以前对IO.NIO还算了解,也写过Netty的项目.但是对底层的数据传递不是很了解,一直存有这方面的疑惑.但是由于有其他事情就被打断了.前阵子因为想要了解volatile关键字的原理,学习了下J ...

  7. Java 容器源码分析之ArrayBlockingQueue和LinkedBlockingQueue

    Java中的阻塞队列接口BlockingQueue继承自Queue接口. BlockingQueue接口提供了3个添加元素方法. add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会 ...

  8. maven -maven.test.skip skipTests

    -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下. -Dmaven.test.skip=true,不执行测试用例,也不编译测试 ...

  9. 按值传递 vs. 按指针传递

    按值传递还是指针传递? 变量赋值有两种方式:按值传递.按"指针"传递(指针也常称为"引用").不同的编程语言赋值的方式不一样,例如Python是按"指 ...

  10. SqlServer 查看死锁的进程

    版权声明:本文为 走错路的程序员 原创文章,欢迎转载. https://blog.csdn.net/phker/article/details/78612974搞sqlsever 好多年, 从来没锁过 ...