Fork me on GitHub

逆水行舟,不进则退

人与人之间最小的差距是智商,最大的差距是坚持。
摘要: 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合 圆环是由两个圆组成的,圆环的面积是外面圆的面积减去内部圆的面积。圆环的周长是内部圆的周长加上外部圆的周长。这个时候,我们就首先实现一个圆形类,计算一个圆的周长和面积。然后在"环形类"中组合圆形的实例作为自己的属性来用 当类之间有显著 阅读全文
posted @ 2018-12-29 12:36 咕噜牛Gruffalo 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 继承 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。 比如,我们已经编写了一个名为Animal的class,有一个run()方法 阅读全文
posted @ 2018-12-29 12:35 咕噜牛Gruffalo 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 产看继承的方法: 提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的 阅读全文
posted @ 2018-12-29 12:35 咕噜牛Gruffalo 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 异常和错误 错误 1.语法错误 这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误 什么是异常 即便Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。 异常就是程序运行时发生错误的信号,在python中,错误触发的异常 阅读全文
posted @ 2018-12-29 12:35 咕噜牛Gruffalo 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 简述——包 包是一种通过使用‘.模块名’来组织python模块名称空间的方式。 注意: 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警觉:这是关于包才有的导入语法 2. 包是目录级的(文件夹级),文件夹是用来组成py文 阅读全文
posted @ 2018-12-29 12:35 咕噜牛Gruffalo 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写并链接到 阅读全文
posted @ 2018-12-29 12:35 咕噜牛Gruffalo 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 模块概念 什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写 阅读全文
posted @ 2018-12-29 12:35 咕噜牛Gruffalo 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 定义 测试工具 http://tool.chinaz.com/regex/ 字符组 [字符组]:这个位置只能出现一个字符。 [0123456789] [0-9] [abcde] [a-z] [A-Z] [0-9a-zA-Z] [A-z]#A的ASCII码小于a。 元字符 量词 常用匹配 . ^ $ 阅读全文
posted @ 2018-12-29 12:35 咕噜牛Gruffalo 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 递归函数 定义 递归的定义——在一个函数里再调用这个函数本身 递归的最大深度——997,即栈溢出。 使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归 阅读全文
posted @ 2018-12-29 12:35 咕噜牛Gruffalo 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 面向对象编程的一个重要特点就是数据封装。在上面的Student类中,每个实例就拥有各自的name和score这些数据。我们可以通过函数来访问这些数据,比如打印一个学生的成绩: 但是,既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,可以直接在Student类的内 阅读全文
posted @ 2018-12-29 12:34 咕噜牛Gruffalo 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Pyt 阅读全文
posted @ 2018-12-29 12:34 咕噜牛Gruffalo 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: 这显然不合逻辑。为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_score()方法里,就可以检查参数: 现 阅读全文
posted @ 2018-12-29 12:34 咕噜牛Gruffalo 阅读(111) 评论(0) 推荐(0) 编辑
摘要: classmethod 类方法在Python中使用比较少,类方法传入的第一个参数为cls,是类本身。并且,类方法可以通过类直接调用,或通过实例直接调用。但无论哪种调用方式,最左侧传入的参数一定是类本身。 通常情况下,类方法使用@classmethod装饰器来声明 当这个方法的操作只涉及静态属性的时候 阅读全文
posted @ 2018-12-29 12:34 咕噜牛Gruffalo 阅读(206) 评论(0) 推荐(0) 编辑
摘要: isinstance(obj,cls)检查是否obj是否是类 cls 的对象 issubclass(sub, super)检查sub类是否是 super 类的派生类 阅读全文
posted @ 2018-12-29 12:34 咕噜牛Gruffalo 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 反射 反射就是通过字符串的形式,导入模块;通过字符串的形式,去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动! hasattr 判断对象中是否有这个方法或变量 getattr 获取对象中的方法或变量的内存地址 hasattr、g 阅读全文
posted @ 2018-12-29 12:34 咕噜牛Gruffalo 阅读(170) 评论(0) 推荐(0) 编辑
摘要: __str__和__repr__ 改变对象的字符串显示__str__,__repr__ 我们先定义一个Student类,打印一个实例: 打印出一堆<__main__.Student object at 0x000002311102EE10>,不好看。 怎么才能打印得好看呢?只需要定义好__str__ 阅读全文
posted @ 2018-12-29 12:34 咕噜牛Gruffalo 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 面向过程 VS 面向对象 面向过程 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好 阅读全文
posted @ 2018-12-29 12:33 咕噜牛Gruffalo 阅读(234) 评论(0) 推荐(0) 编辑