#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/7/12 14:50
# @Author : 大坏男孩
# @File : day7_面向对象特性.py
# @Software: PyCharm
# @license : Copyright(C), 未来集团有限公司
# @Contact : 110@163.com """
面向对象的特性:
继承:1、在python里,面向对象的继承,叫多继承
2、当子类继承父类后,子类调用属性时,先找自己的属性字典;
如果没有,再找父类的属性字典,父类没有就报错
3、MRO继承顺序:广度优先。简单来说是从左到右。
通过 子类.mro 查看继承顺序
4、如果类没有继承父类,默认继承object类
多态:不同的对象调用相同的方法产生不同的结果
封装:私有变量 -->格式1:_变量名 协议:当变量定义为私有变量时,不应该直接去访问它
-->格式2:__变量名 私有变量储存在属性字典时,会在变量名前拼接上 _类名
储存结果是 _类名__变量名
私有函数 -->格式:__函数名
1、把相似的类、相同的代码、相同的函数或者重复的代码,写成一个函数或者类
2、把类的所有属性声明为私有属性,提供一个接口给访问者,访问者通过这个接口来访问类当中的属性
""" class I():
jiayou = "加油"
def add(self):
print("我是我") class You(I):
# jiayou = "come on"
def add(self):
print("你是你") print(You.jiayou)
You.add(666) class A(): # A默认继承object类,等效于class A(object)
def test(self):
print("我是A") class B():
pass class C(A):
def test(self):
print("我是C") class D(B):
pass class E(C):
def test(self):
print("我是E") class F(D, E):
pass class G(E):
pass class I(E):
pass class H(F, I, G):
pass # 打印继承顺序,返回列表
print(H.mro()) # 多态:不同的对象调用相同的方法产生不同的结果
class H2O:
def __init__(self,name,temperature):
self.name = name
self.temperature = temperature def turn_ice(self):
if self.temperature < 0:
print("{}温度太低结冰".format(self.name))
elif self.temperature in range(1,100):
print("{}没有任何变化".format(self.name))
else:
print("{}温度太高变为水蒸气".format(self.name)) class Water(H2O):
pass
class Ice(H2O):
pass
class Steam(H2O):
pass w1 = Water("水",25)
i1 = Ice("水",-20)
s1 = Steam("水",666) w1.turn_ice()
i1.turn_ice()
s1.turn_ice() # 私有变量和私有函数
class Sum():
def __init__(self,value):
self.__value = value def __add(self,x):
return x + self.__value def network(self,x):
"""接口--访问者可以通过这个接口来访问类中的属性"""
data = self.__add(x)
return data
和 = Sum(66)
# print(和.__dict__)
if __name__ == "__main__":
n = Sum(30)
print(n.network(5)) # print(__name__) class NameGood:
__a = 666666
print(__a) # 打印NameGood类的属性字典
print(NameGood.__dict__) # 调试程序:
if __name__ == "__main__":
# 打印NameGood类的私有变量__a
print(NameGood._NameGood__a)
# 新建一个对象namegood,没有参数
namegood = NameGood()
# 打印对象namegood的属性字典
print(namegood.__dict__)
# print(namegood.__a)

  

day7_面向对象特性的更多相关文章

  1. Java语言中的面向对象特性总结

    Java语言中的面向对象特性 (总结得不错) [课前思考]  1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类?  2. 面向对象编程的特性有哪三个?它们各自又有哪些特性?  3. 你知 ...

  2. Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

    Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...

  3. 浅谈Objective—C中的面向对象特性

    Objective-C世界中的面向对象程序设计 面向对象称程序设计可能是现在最常用的程序设计模式.如何开发实际的程序是存在两个派系的-- 面向对象语言--在过去的几十年中,很多的面向对象语言被发明出来 ...

  4. javascript进阶——面向对象特性

    面向对象的javascript是这门语言被设计出来时就考虑的问题,熟悉OOP编程的概念后,学习不同的语言都会发现不同语言的实现是不同的,javascript的面向对象特性与其他具有面向对象特性的语言的 ...

  5. C++对C语言的非面向对象特性扩充(3)

    今天要讲的是C++作用域运算符"::",强制类型转换的扩充,C++中相对于C中malloc和free函数的运算符new和delete,以及C++对C的一个重要扩充:引用(refer ...

  6. .NET面向对象特性之封装

    .NET面向对象特性之封装 面向对象的基本内容由:类.对象.属性.方法.字段构成. 面向对象的三大特性:继承.多态.封装. 关于面向对象的特性很多人都把目光转向了继承.多态和接口,却很少有人提及过封装 ...

  7. .NET面向对象特性之多态

    .NET面向对象特性之多态 前言 上一篇总结了面向对象三大特性之一的继承,再接再厉,这一章继续总结多态.同时把继承中涉及到多态的内容进一步补充扩展.可以说“继承”是多态的根基.但继承主要关注的是“共通 ...

  8. .NET面向对象特性之“继承”

    整体简介 1.理解继承——继承关系图 2.实现继承与接口多继承 3.new. virtual.override方法 4.抽象方法和抽象类的继承 5.继承的本质 6.继承的复用性.扩展性和安全性 7.多 ...

  9. TypeScript -- 面向对象特性

    .class关键字和类名就可以定义一个类 . 类的访问控制符--有三个,.] = ] = ] = ;.声明参数 .用接口声明方法 .理解模块--一个文件就是一个模块,就是这么个意思 ,不用想的多么高大 ...

随机推荐

  1. 【转载】Spring学习(1)——快速入门--2019.05.19

    原文地址:https://www.cnblogs.com/wmyskxz/p/8820371.html   认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念 ...

  2. 一个页面从输入url到加载到内容,这个过程经历了什么

    首先,当浏览器接收到url,会查看本地缓存(浏览器缓存-系统缓存-路由器缓存)中是否有,有则直接显示 没有则进行DNS域名解析,将域名解析成IP地址,通过ip地址去访问相应的服务器, 浏览器访问服务器 ...

  3. MySQL常用数据类型 length 专题

    MySQL-data_type数据类型 1.查看数据类型 mysql> help data type    //通过help对数据进行查看,以及使用的方法 2.MySQL常见的数据类型 整数in ...

  4. OpenDaylight开发hello-world项目之功能实现

    OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...

  5. Saiku上线部署准备(三十)

    Saiku上线部署准备 零零散散琢磨了快5个月了,终于快要上线了哈哈哈哈哈.....  激动!!! 以下是本地打包编译saiku至部署到服务器上使用的完整步骤哦 saiku部署到服务器 源码编译需要注 ...

  6. Java Tomcat 使用(IDEA)

    Tomcat 服务器软件的使用 (配置文件,  部署项目 ); 基本的 web 知识回顾: 1. web 服务器 软件:  Tomcat  (常见的, 主流的, 开源的, 免费的,软件)   1. 软 ...

  7. Ansible之roles角色

    一.roles简介 ansible自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用roles只 ...

  8. TCP协议 - 面向连接

    一.TCP特性概览 1.面向连接 TCP是基于连接进行数据交互,通信双方在进行数据交互之前需要建立连接,该连接也只能用在双方之间进行交互.这点不像UDP中的组播和广播,可以在同一组中多个主机交互数据. ...

  9. 框架基础:深入理解Java注解类型(@Annotation)

    注解的概念 注解的官方定义 首先看看官方对注解的描述: An annotation is a form of metadata, that can be added to Java source co ...

  10. 15个Python面试问题

    引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Python.下面这些问题涉及了与Python相关的许多技能,问题的关注点主要是语言本身,不是某个特定的包或模块.每一个问题都可以 ...