zoukankan      html  css  js  c++  java
  • 03python学习

    ---恢复内容开始---

    补充:

    私有变量不可被继承,但是可以通过
     1.通过访问器
     2.找到它真正的名字

    面向对象进阶2

    静态调用方法

    如果类中需要非该类成员存在,则可以使用静态调用的方法@staticmethod,如下图所示:

    静态方法案例:输入四条边,判断它是否是一个正方形,如果是,计算其面积

    继承

    我们可以在已有类的基础上创建新类,这其中的一种做法就是让一个类从另一个类那里将属性和方法直接继承下来,从而减少重复代码的编写。提供继承信息的我们称之为父类,也叫超类或基类;得到继承信息的我们称之为子类,也叫派生类或衍生类。子类除了继承父类提供的属性和方法,还可以定义自己特有的属性和方法,所以子类比父类拥有的更多的能力,在实际开发中,我们经常会用子类对象去替换掉一个父类对象,这是面向对象编程中一个常见的行为,对应的原则称之为里氏替换原则

    实例:创建一个父类创建一个子类,父类计算两个数字的和记为SUM_,子类打印这个SUM

    列表生成式,如图

    列表生成器,如图

    列表生成式与列表生成器对比:

     列表生成式:                                                                                                                                                    
     a = [x for x in range(100000) if x % 2 == 0                                                                                                       
     优点:计算速度快,因为一次性已经全部加载到内存中了,                                                                            
     适合数据量不是太大的情况10000-20000
     缺点:占用内存      

    列表生成器:   

    a = (x for x in range(100000) if x % 2 == 0) 

    优点:节约内存空间

    缺点:计算速度慢                                                                                                                                     

    闭包

    我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。

    例:                                                                                                                                                           

                                              

    装饰器

    python装饰器(fuctional decorators)就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。 这个函数的特殊之处在于它的返回值也是一个函数,这个函数是内嵌“原“”函数的函数。

    使用装饰器的时候,需要注意:

    1. 装饰器名,函数名需要一致.
    2. property需要先声明,再写setter,顺序不能倒过来
    3. 如果你希望一点变量只是被访问不能被修改,那么可以使用访问器@property
    4. 如果要修改访问器中的变量,可以搭建一个修改器,或者删除访问器.

    例:

    装饰器案例1:创建一个装饰器,三个函数(两个参数),装饰器处理这两个参数的和,并打印,每一个函数打印这两个数字。

    装饰器案例2:装饰器将前两个数字求和,函数本身第三个参数乘上这个和

                                                                                                    
                                                                                                                        
                                                                                                                        
     
     

    ---恢复内容结束---

  • 相关阅读:
    Java 面向对象(二)封装
    Java 面向对象(一)面向对象思想
    Java 字符串(二)字符串常用操作
    Java 字符串(一)字符串初始化
    JavaScript 流程控制(二)循环结构
    【剑指Offer-知识迁移能力】面试题58:翻转单词顺序
    【剑指Offer-知识迁移能力】面试题57.2:和为s的连续整数序列
    【剑指Offer-知识迁移能力】面试题57:合为s的两个数字
    【剑指Offer-知识迁移能力】面试题56:数组中只出现一次的两个数字
    【剑指Offer-知识迁移能力】面试题55.2:平衡二叉树
  • 原文地址:https://www.cnblogs.com/sunyuxin/p/11322370.html
Copyright © 2011-2022 走看看