python第三十一天-----类的封装、继承,多态.....
封装
封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
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第三十一天-----类的封装、继承,多态.....的更多相关文章
- java类的封装 继承 多态
1.猜数字小游戏 package cn.jiemoxiaodi_02; import java.util.Scanner; /** * 猜数字小游戏 * * @author huli * */ pub ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- 孤荷凌寒自学python第三十一天python的datetime.timedelta模块
孤荷凌寒自学python第三十一天python的datetime.timedelta模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) datetime.timedelta模块是一个表示 ...
- python第三十一课--递归(2.遍历某个路径下面的所有内容)
需求:遍历某个路径下面的所有内容(文件和目录,多层级的) import os #自定义函数(递归函数):遍历目录层级(多级) def printDirs(path): dirs=os.listdir( ...
- python面向对象(封装,继承,多态)
python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...
- 浅谈学习C++时用到的【封装继承多态】三个概念
封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...
- Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
随机推荐
- oracle中常用的对用户的操作
创建用户:create user usr1 identified by pwd default tablespace ts1 temporary tablespace tmp; 删除用户:drop u ...
- Mybatis-generator生成Service和Controller
好久记录笔记,这段时间做政府的项目,数据录入系统基本都是通过excel导入,且数据量大,许多也是单表的录入,这就有很多可以通用的代码,如controller,service层的那一套都是可以代码生成, ...
- eclipse 安装插件报错问题
报错信息 An error occurred while installing the items session context was:(profile=epp.package.jee, phas ...
- Nunit测试工具使用
Nunit是什么 Nunit是一种TDD工具,和Junit一样的! 怎么样获取Nunit 打开Visual Studio工具,然后在菜单栏中的工具->扩展管理器中的联机库中搜索"nun ...
- java-Timer类使用方法
Timer: public Timer()创建一个新计时器.相关的线程不 作为守护程序运行. 方法摘要: void schedule(TimerTask task, Date time) ...
- Kafka实战-Storm Cluster
1.概述 在<Kafka实战-实时日志统计流程>一文中,谈到了Storm的相关问题,在完成实时日志统计时,我们需要用到Storm去消费Kafka Cluster中的数据,所以,这里我单独给 ...
- Makefile.am文件配置
Makefile.am Makefile.am是一种比Makefile更高层次的编译规则,可以和configure.in文件一起通过调用automake命令,生成Makefile.in文件,再调用./ ...
- 突发奇想想学习做一个HTML5小游戏
前言: 最近一期文化馆轮到我分享了,分享了两个,一个是关于童年教科书的回忆,一个是关于免费电子书的.最后我觉得应该会不敌web,只能说是自己在这中间回忆了一下那个只是会学习的年代,那个充满梦想的年代. ...
- 安装MongDB
MongoDB:非关系型的文档型数据库. 下载 安装 bin拷贝到d:/mongodb/bin 新建文件夹: d:/mongodb/var 新建文件 d:/mongodb/logs.txt 打开cmd ...
- [Luogu4986] 逃离
Description 给定次数为 \(n\) 的函数 \(A(x),B(x),C(x)\),求 \(A^2(x)+B^2(x)-C^2(x)\) 在 \([L,R]\) 的零点.\(n\leq 10 ...