usr/bin/env python # -*- coding:utf-8 _*- """ # author: 小菠萝测试笔记 # blog: https://www.cnblogs.com/poloyy / # time: 2021/9/7 11:18 下午 # file: 18_实战6.py """ # 课程类 class Course(object): def __init__(self 深圳南山大学城分校", 5555) # 添加分校 school.addBranchSchool(bj1) school.addBranchSchool(sz1) # 初始化班级 class1 = Class("Python 基础班级") class2 = Class("Python 进阶班级") # 初始化课程 c1 = Course("Python 基础", 666) c2 = Course("Python 进阶", 1666) c3 = Course("Python 实战", 2666) # 添加课程 class1.addCourse(c1) class1.addCourse(c2) class2.addCourse
而面向对象是一种抽象,抽象是指用分类的眼光去看世界的一种方法。 Python 就是一门面向对象的语言, 如果你学过 Java ,就知道 Java 的编程思想就是:万事万物皆对象。 Python 也不例外,在解决实际问题的过程中,可以把构成问题事务分解成各个对象。 面向对象都有两个基本的概念,分别是类和对象。 类 用来描述具有相同的属性和方法的对象的集合。 如果你是初次接触面向对象的编程语言,看到这里还一脸懵逼,不要紧,这是正常的。下面我们会通过大量的例子逐步了解 Python 的面向对象的知识。 二、类的定义和调用 1、怎么理解类? 类是什么? 中,我们定义类的时候最好定义新式类,当然在 Python3 中不存在这个问题了,因为 Python3 中所有类都是新式类。 2.7 运行的结果: /Users/twowater/dev/python/test/venv/bin/python /Users/twowater/dev/python/test/com/twowater
Python 语法和 SQL 语法、各种引号、百分号、转义字符混杂在一起的酸爽,用过的人都忘不了。 顾名思义,就是将关系型数据库与 Python 中的对象关联起来,提供了一种操作数据的简便方式,相当于对数据库加了一层更友好的接口。 今天我们就来重点介绍下 peewee 这个 Python ORM 库。 ,自然需要以面向对象的方式定义数据结构。 虽然没有像 Requests 那样贴心地提供中文版,但也同样足够人性化。
依赖倒置原则(DIP),The Dependency Inversion Principle 定义 1、高层模块不应该依赖低层模块,两都应该依赖于抽象。 2、抽象不依赖于具体细节。 3、具体细节应该依赖于抽象。 抽象就是指接口或者抽象类,细节是指实现接口或者抽象类的具体实现类。 也就是说模块之间的依赖通过接口或抽象发生的,两个实现细节之间不能直接发生依赖,接口不能依赖实现,实现应该依赖抽象。 我们在进行分布式系统开发时,比如常用的dubbo框架,各个系统的连接都是通过接口发生的,只要依赖对方的接口就行
里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地方必须能透明地引用其子类的对象,即子类可以拓展父类的功能,但不能修改父类已有的功能。
这些应用看起来也并不复杂,无非是合理地定义接口和抽象类,不同的业务功能采用不同的实现类达到扩展,像设计模式中的策略模式、模板方式模式等都是开放封闭的原则。
像spring中的BeanFactory定义了bean的各种最基本的操作的方法,而BeanFactory下面又有3个扩展的子接口,扩展的子接口拥有父接口的全部方法并且拥有自己的独特的方法,我们可以按需要直接实现父接口或者实现子接口 看起来,接口隔离原则是不怎么难实现的原则,只要具备一点业务抽象能力的都可以做到,接口隔离原则在一方面也满足了单一职责原则。
本文写给初学 Python 的朋友,试图讲明白以下问题: 0、什么是类和对象? 1、即然有了函数,为什么还要有类? 2、Python 如何定义 公有/保护/私有 属性/方法? 什么是类和对象 先说对象,对象通常有两层意思,指行动或思考时作为目标的事物或特指恋爱的对方。在编程的世界里,对象就是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。 编程时,你可以将对象映射成任何你想映射的东西,只不过,映射的如果更符常规时,代码更容易使用和理解,也更有利于后续的快速迭代和扩展。在 Python 的世界里,万物皆对象。 对象是类中一个具体的事物,是由类初始化后生成的,通常也叫 object,或者实体,比如女人是一个类,而你的女朋友就是一个对象。 属性:对象的某个静态特征,比如你女朋友的肤色,民族,血型等。 Python 并不会阻碍程序员去访问类的私有属性或私有方法,Python 选择相信程序员。
缺点是:可控性差,无法向面向过程的程序设计流水线式的可以很精准的预测问题的处理流程与结果,面向对象的程序一旦开始就由对象之间的交互解决问题。 在python中面向对象的程序设计并不是全部。 在定义好类之后,我们可以使用类来进行实例化,在别的语言中,如Java, C++,都是可以使用关键字new一个对象,在Python中,不需要使用,比如我们初始化如下两个"打工人"对象: fengqingyang 面向对象三大特性 继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类。 Python垃圾回收机制 Python 使用了引用计数这一简单技术来跟踪和回收垃圾。 在 Python 内部记录着所有使用中的对象各有多少引用。 一个内部跟踪变量,称为一个引用计数器。 作为引用计数的补充, 垃圾收集器也会留心被分配的总量很大(即未通过引用计数销毁的那些)的对象。 在这种情况下, 解释器会暂停下来, 试图清理所有未引用的循环。 6.
1、isinstance(对象名,类),查看对象是不是类的实例。 案例1:isinstance(对象名,类) classFoo: print('hh') obj=Foo() ret=isinstance(obj,Foo) print('查看obj是不是类Foo的实例: ): print('c1.f1') classc2(c1): deff1(self): super(c2,self).f1()#主动执行父类的f1 print('c2.f1') obj=c2()#创建对象 model=__import__(path,fromlist=True)#用import导入模块 cls=getattr(model,classname)#用反射思想获取方法/类 obj=cls()#创建对象 obj.f1()#执行对象中的方法 if__name__ =='__main__': run() 执行结果: 案例2-3在不修改源码commons的基础上,在之前和之后做一些操作; 假设commons
迪米特原则(LOD),The Law Of Demeter,也称为最少知识原则 定义 一个对象应该对其他对象有最少的了解。 但另一方面,为了满足这些特性而又不得不增加很多包装的类或方法,这在一定程度上也就提高了类的复杂性。
单一职责原则(SRP),The Single Responsibility Principle 定义 一个类的修改只能有一个被修改的原因。 通俗地讲,就是一个类只能负责一个职责,修改一个类不能影响到别的功能,也就是说只有一个导致该类被修改的原因。我们写代码的都知道尽量要做到低耦合、高内聚的特性,单一职责原则正是保证了类与类之间的低耦合性。一个类如果承担过多的职责,就会有很多原因来导致这个类的被修改,就有很大可能性影响到别的功能。 单一职责原则,看起来是一个非常简单的原则,但真正实践起来也并非易事,因为职
还在为Python程序中大量数据的持久化存储发愁吗?JSON太简单不够灵活,SQLite又太重了?今天给大家介绍一个Python标准库中的隐藏宝藏 - shelve库。 这个库就像是一个神奇的百宝箱,能让你像使用字典一样简单地存储各种Python对象。在我早期开发一个数据采集项目时,需要存储大量的中间结果。 基本用法shelve最大的特点就是可以像使用字典一样操作它:# 创建/打开一个shelve数据库with shelve.open('mydata') as db: # 存储各种Python对象 shelve会自动处理序列化和反序列化,支持几乎所有Python内置数据类型。 进阶技巧shelve还有一些鲜为人知的高级特性:with shelve.open('mydata', writeback=True) as db: # 启用writeback可以自动同步可变对象的修改
Python系列文章目录 第一章 Python 入门 第二章 Python基本概念 第三章 序列 第四章 控制语句 第五章 函数 第六章 面向对象基础 ---- 面向对象基础 Python系列文章目录 默认的类方法 __init__ 构造方法和__new__ 方法 __del__方法(析构函数)和垃圾回收机制 `__call__` 方法和可调用对象 @property 装饰器 6. 面向对象简介 Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等。 Python中,一切皆对象. 注意: 可调用对象包括自定义的函数、Python 内置函数、以及本节所讲的实例对象. 定义了 __call__() 的对象, 称为“可调用对象”, 即该对象可以像函数一样被调用. 该方法使得实例对象可以像调用普通函数那样, 以“对象名()”的形式使用 实操代码 def f1(): print("f1") f1() # 本质上也是调用了 __call__()方法
一、Go的内存allocator:一家24小时不打烊的“米其林快餐店”Go的内存分配器灵感来自Google的tcmalloc,结构像一家高效后厨:角色职责类比mcache每个Goroutine私人小冰箱 GC扫的是“有多少个对象”,不是“总共多大”——1000个100B的对象,比1个100KB的对象更让GC头疼! ⚠️四、三大“作死行为”排行榜(含抢救指南)排名行为后果抢救方案#1:sync.Pool当全局垃圾桶池子塞满低频对象,开销反超分配内存没省,CPU更累只池化高频+短命对象(如API响应体)#2:大对象塞进 99%内存浪费程序变“虚胖”用pprof+benchstat实测最优值血泪案例:某同学给[]logEntry预分配cap=1e6,结果日均日志量200条……服务器内存:↑800MB团队代码评审氛围:↓↓ :少分配、多复用——像珍惜奶茶杯一样珍惜内存✅大对象:分块干、及时退——开卡车前,先看看胡同宽不宽✅一切优化:先测量,再动手——pprof是你的X光,不是装饰品
微软三面 一面 1.自我介绍 2.了解设计模式吗?(不了解 T T) 3.数据库熟悉吗? 4.LR的优化函数 5.SVM和LR的区别 6.(手撕代码)一个乱序数组,找出和为0的最长子串。 二面就手撕两个算法,因为过程中出现网络不太好,第二个算法只写了伪代码。 三面(Leader面) 1.自我介绍 2.问了做过的论文 3. 阿里面试(6面) 一面(简历评估面试) 1.自我介绍 2.笔试中算法题为什么没有做出来?现在有不有思路? 3.一个先单调递增再单调递减的数组,给一个目标值,判断目标值是否在数组中。 二面(技术面) 1.自我介绍 2.两个算法题。时间比较久远了,有点遗忘。都是比较基础,依稀记得是一个二分查找和一个简单的动态规划。 三面(技术面) 1.自我介绍 2.(手撕代码)字符串的全排列 3. 大概20min,过程比较轻松 六面(HR面) 1.明确工作地点和岗位 2.本科为什么学了金融二专 3.金融二专对你有什么改变 4.你通过什么渠道了解这个岗位 5.为什么觉得你和这个岗位匹配 6.你了解过国内外相关的技术吗
数字对象 Groovy的数字被定义为对象,都是Number类的子类的一个实例。 compareTo() 比较两个数字的值 equals() 比较两个数字的对象 valueOf() 返回参数的值得Number对象 toString() 返回Number对象的值得String对象 parseXxx 字符串对象 引号包含的字符串文本,在Groovy中创建一个字符串对象。 范围对象 1..10 - 包含范围 1 .. <10 - 排除范围 'a'..'x' - 字符范围 10..1 - 降序范围 'x'..' () 获取键值的集合 Object put(Object key, Object value) 插入键值对 int size() 返回Map的大小 Collection values() 值得集合 6.
苏轼的这首诗和金出先生的“像外行一行思考,像专家一样实践”有着异曲同工之妙,原本以为这本书不太适合自己阅读,然而认真的读完试读文章,内心感觉,如果我能在工作当中秉持着这两句话的精髓,那么工作中很多事情都能够迎刃而解 保持冷静 “像外行一样思考,像专家一样实践”是一个口号,然而,不能太过牵强附会,如果让我一个外行去创造出一首“义勇军进行曲”,结果会什么呢?当然什么也没有。 《像外行一样思考,像专家一样实践——科研成功之道(修订版)》不仅用作者亲身经历的大量事例极具趣味地描述了许多有效的科研法则,如“海阔天空的构思”、“跳出现有的成功”、“KISS方法”、“用情景推动研究进展 《像外行一样思考,像专家一样实践——科研成功之道(修订版)》不仅适合科研人士,应该说适合任何读者阅读,因为它能对自己工作、学习和生活在解决问题方面有许多参考价值。 《像外行一样思考,像专家一样实践——科研成功之道(修订版)》尤其适合在校大学生、研究生在思考如何培养自身能力,如何发展自我的时候参考阅读。 本书作者简介: 金出武雄生于1945年。
son.sum(); 由于子类也有个构造函数,参数就被传进了子类,并没有到父类的构造函数去 如果有方法将这个参数传递给父类那么问题就解决了 super关键字 super关键字用于访问和调用对象父类上的函数
scala - 面向对象编程 定义类来说不需要修饰,直接使用 class 创建即可。 " def sayHello(){ print("Hello," + " " + name) } // 不加括号的方法调用时也不能加 def getName = name } // 创建对象 如果将 field 使用 private 来修饰,那么代表这个 field 是类私有的,在类的方法中,可以直接访问类的其他对象的 private field 。 如果不希望 field 被其他对象访问到,那么可以使用 private[ this ] ,意味着对象私有的 field ,只有本对象内才可以访问到。 内部类 在 Scala 中,同样的可以在类中定义内部类,但是与 Java 不同的是,每个外部类的对象的内部类都是不同的类。 意思就是定义之后生成两个外部类,那么这两个外部类的内部类不是同一种。