python入门学习笔记之面向对象设计与开发

Python 之面向对象详解:从入门到实践 Python 中用classclass 类名(父类,可选):"""类的文档字符串(说明类的功能)"""# 1. 初始化方法(必写,用于给对象设置初始属性)def __init__(self, 参数1, 参数2, ...):self.属性1 = 参数1 # 给对象绑定“属性1”self.属性2 = 参数2 # 给对象绑定“属性2”# 2. 自定义方法(对象能做的操作)def 方法名(self, 可选参数...):# 方法体(可以使用self访问对象的属性)代码逻辑Python 中,以。 阅读详情

练习题

  1. 面向对象三大特性,各有什么用处,说说你的理解。

  2. 类的属性和对象的属性有什么区别?

  3. 面向过程编程与面向对象编程的区别与应用场景?

  4. 类和对象在内存中是如何保存的。

  5. 什么是绑定到对象的方法、绑定到类的方法、解除绑定的函数、如何定义,如何调用,给谁用?有什么特性

  6. 使用实例进行 获取、设置、删除 数据, 分别会触发类的什么私有方法

     class A(object):
         pass
    
     a = A()
    
     a["key"] = "val"
     a = a["key"]
     del a["key"]
    
    
  7. python中经典类和新式类的区别

  8. 如下示例, 请用面向对象的形式优化以下代码

       def exc1(host,port,db,charset,sql):
           conn=connect(host,port,db,charset)
           conn.execute(sql)
           return xxx
       def exc2(host,port,db,charset,proc_name)
           conn=connect(host,port,db,charset)
           conn.call_proc(sql)
           return xxx
       # 每次调用都需要重复传入一堆参数
       exc1('127.0.0.1',3306,'db1','utf8','select * from tb1;')
       exc2('127.0.0.1',3306,'db1','utf8','存储过程的名字')
    
    
  9. 示例1, 现有如下代码, 会输出什么:

      class People(object):
          __name = "luffy"
          __age = 18
    
      p1 = People()
      print(p1.__name, p1.__age)
    
    
  10. 示例2, 现有如下代码, 会输出什么:

```
class People(object):

   def __init__(self):
       print("__init__")

   def __new__(cls, *args, **kwargs):
       print("__new__")
       return object.__new__(cls, *args, **kwargs)

People()

```
  1. 请简单解释Python中 staticmethod(静态方法)和 classmethod(类方法), 并分别补充代码执行下列方法。
```
class A(object):

   def foo(self, x):
       print("executing foo(%s, %s)" % (self,x))

   @classmethod
   def class_foo(cls, x):
       print("executing class_foo(%s, %s)" % (cls,x))

   @staticmethod
   def static_foo(x):
       print("executing static_foo(%s)" % (x))

a = A()

```
  1. 请执行以下代码,解释错误原因,并修正错误。
```
class Dog(object):

   def __init__(self,name):
       self.name = name

   @property
   def eat(self):
       print(" %s is eating" %self.name)

d = Dog("ChenRonghua")
d.eat()

```
  1. 下面这段代码的输出结果将是什么?请解释。
```
class Parent(object):
   x = 1

class Child1(Parent):
   pass

class Child2(Parent):
   pass

print(Parent.x, Child1.x, Child2.x)
Child1.x = 2
print(Parent.x, Child1.x, Child2.x)
Parent.x = 3
print(Parent.x, Child1.x, Child2.x)

# 1 1 1 继承自父类的类属性x,所以都一样,指向同一块内存地址
# 1 2 1 更改Child1,Child1的x指向了新的内存地址
# 3 2 3 更改Parent,Parent的x指向了新的内存地址

```
  1. 多重继承的执行顺序,请解答以下输出结果是什么?并解释。
```
class A(object):
   def __init__(self):
       print('A')
       super(A, self).__init__()

class B(object):
   def __init__(self):
       print('B')
       super(B, self).__init__()

class C(A):
   def __init__(self):
       print('C')
       super(C, self).__init__()

class D(A):
   def __init__(self):
       print('D')
       super(D, self).__init__()

class E(B, C):
   def __init__(self):
       print('E')
       super(E, self).__init__()

class F(C, B, D):
   def __init__(self):
       print('F')
       super(F, self).__init__()

class G(D, B):
   def __init__(self):
       print('G')
       super(G, self).__init__()

if __name__ == '__main__':
   g = G()
   f = F()

# G
# D
# A
# B
#
# F
# C
# B
# D
# A

```
  1. 请编写一段符合多态特性的代码.

  2. 很多同学都是学会了面向对象的语法,却依然写不出面向对象的程序,原因是什么呢?原因就是因为你还没掌握一门面向对象设计利器,即领域建模,请解释下什么是领域建模,以及如何通过其设计面向对象的程序?http://www.cnblogs.com/alex3714/articles/5188179.html 此blog最后面有详解

  3. 请写一个小游戏,人狗大站,2个角色,人和狗,游戏开始后,生成2个人,3条狗,互相混战,人被狗咬了会掉血,狗被人打了也掉血,狗和人的攻击力,具备的功能都不一样。注意,请按题14领域建模的方式来设计类。

  4. 编写程序, 在元类中控制把自定义类的数据属性都变成大写.

  5. 编写程序, 在元类中控制自定义的类无需init方法.

  6. 编写程序, 编写一个学生类, 要求有一个计数器的属性, 统计总共实例化了多少个学生.

  7. 编写程序, A 继承了 B, 俩个类都实现了 handle 方法, 在 A 中的 handle 方法中调用 B 的 handle 方法

  8. 编写程序, 如下有三点要求:

  9. 自定义用户信息数据结构, 写入文件, 然后读取出内容, 利用json模块进行数据的序列化和反序列化

```
e.g
{
    "egon":{"password":"123",'status':False,'timeout':0},
    "alex":{"password":"456",'status':False,'timeout':0},
}

```

1.  定义用户类,定义方法db,例如 执行obj.db可以拿到用户数据结构
2.  在该类中实现登录、退出方法, 登录成功将状态(status)修改为True, 退出将状态修改为False(退出要判断是否处于登录状态).密码输入错误三次将设置锁定时间(下次登录如果和当前时间比较大于10秒即不允许登录)
  1. 用面向对象的形式编写一个老师角色, 并实现以下功能, 获取老师列表, 创建老师、删除老师、创建成功之后通过 pickle 序列化保存到文件里,并在下一次重启程序时能
    读取到创建的老师, 例如程序目录结构如下.
```
.
|-- bin/
|   |-- main.py         程序运行主体程序(可进行菜单选择等)
|-- config/
|   |-- settings.py     程序配置(例如: 配置存储创建老师的路径相关等)
|-- db                  数据存储(持久化, 使得每次再重启程序时, 相关数据对应保留)
|   |-- teachers/          存储所有老师的文件
|   |-- ...                ...
|-- src/                程序主体模块存放
|   |-- __init__.py
|   |-- teacher.py      例如: 实现老师相关功能的文件
|   |-- group.py        例如: 实现班级相关的功能的文件
|-- manage.py           程序启动文件
|-- README.md           程序说明文件

```
  1. 根据23 题, 再编写一个班级类, 实现以下功能, 创建班级, 删除班级, 获取班级列表、创建成功之后通过 pickle 序列化保存到文件里,并在下一次重启程序时能
    读取到创建的班级.

  2. 根据 23题, 编写课程类, 实现以下功能, 创建课程(创建要求如上), 删除课程, 获取课程列表

  3. 根据23 题, 编写学校类, 实现以下功能, 创建学校, 删除学校, 获取学校列表

  4. 通过23题, 它们雷同的功能, 是否可以通过继承的方式进行一些优化

```
伪代码
class Behavior(object):

    def fetch(self, keyword):
        通过 keyword 参数 查询出对应的数据列表

class School(Behavior):

    pass

class Teacher(Behavior):

    pass

s = School()
t = Teacher()

s.fetch("school")
t.fetch("teacher")

```

本章作业

题目:选课系统开发,要求有四种角色:学校、学员、课程、讲师

详细要求:

  1. 创建北京、上海 2 所学校

  2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开

  3. 课程包含,周期,价格,通过学校创建课程

  4. 通过学校创建班级, 班级关联课程、讲师

  5. 创建学员时,选择学校,关联班级

  6. 创建讲师角色时要关联学校

  7. 提供两个角色接口

  8. 为学员、讲师、管理员分别提供用户界面,并提供对应功能: 1 学员视图, 可以注册, 交学费, 选择班级, 2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 3 管理视图,创建讲师, 创建班级,创建课程

*注1:上面的操作产生的数据都通过pickle序列化保存到文件里 *注2:此作业必须画流程图,图中标注好不同类或对象之间的调用关系

Python面向对象与设计模式实践指南 本文系统讲解了Python面向对象分析与设计的核心方法,涵盖类图绘制、继承与组合的选择、UML图示绘制、模块化设计、错误处理、数据结构优化、生成器使用以及常见设计模式的实践应用,旨在提升代码结构清晰度与可维护性。 阅读详情

相关推荐

面向对象设计与Python实践

本文通过多个编程实践案例,深入探讨面向对象设计的核心概念,包括类与对象、继承与组合、异常处理、UML建模及数据结构优化。重点分析了属性与行为的区分、混入类的应用、设计模式选择以及代码可维护性提升策略,帮助开发者构建清晰、可扩展的Python应用程序。

g5h6i的博客 767

opp小节

本章总结 练习题 面向对象三大特性,各有什么用处,说说你的理解。 类的属性和对象的属性有什么区别? 面向过程编程与面向对象编程的区别与应用场景? 类和对象在内存中是如何保存的。 什么是绑定到对象的方法、绑定到类的方法、解除绑定的函数、如何定义,如何调用,给谁用?有什么特性 使用实例进行 获取、设置、删除 数据, 分别会触发类的什么私有方法 class A(object): pass...

元贞 304

Python学习笔记-面向对象

Python面向对象

hcie17088双IE的博客 1005

面向对象编程(练习题)

1、面向对象三大特性,各有什么用处,说说你的理解   继承:解决代码重用   多态:不考虑对象类型的情况下直接使用对象   封装:明确的区分内外,控制外部对隐藏属性进行操作,隔离复杂度 2、类的属性和对象的属性有什么区别?   类的属性:数据属性,和函数属性,函数绑定给对象使用   对象的属性:对象就是实例化的类 3、面向过程编程与面向对象编程的区别与应用场景?   面向过程:复...

weixin_34375251的博客 1746

Python入门第八课:架构设计与全栈开发

这篇教程全面介绍了Python高级开发技术,涵盖面向对象设计、并发编程、Web全栈开发、云原生部署和性能优化五大核心领域。文章通过代码示例详细讲解了SOLID原则在Python中的实践、FastAPI后端开发、React前端集成、Docker/Kubernetes部署和推荐系统实现等实用技能。教程采用"理论+实践"方式,从设计模式到项目实战,展示了Python在构建复杂系统时的应用场景和技术组合,为开发者提供了从初级到高级的完整成长路线图。

qq_52380715的博客 980

Python编程从入门到实践:学习笔记与源码练习

Python 是一种解释型的高级编程语言,由 Guido van Rossum 在1989年圣诞节期间开始设计,于1991年首次发布。其设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进来定义代码块,而不是使用大括号或关键字)。Python 支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。Python 模块实际上就是一个包含 Python 代码的文件,它被命名为.py。创建自定义模块允许开发者将代码分解成可重用和可组织的部分,从而提高代码的可维护性和可读性。

weixin_32999557的博客 929

python 面向对象练习题

python 要掌握面向对象,你得会做这些题1,面向对象三大特性,各有什么用处,说说你的理解。2,类的属性和对象的属性有什么区别?3,面向过程编程与面向对象编程的区别与应用场景?4,类和对象在内存中是如何保存的。5,什么是绑定到对象的方法、绑定到类的方法、解除绑定的函数、如何定义,如何调用,给谁用?有什么特性6,使用实例进行 获取、设置、删除 数据, 分别会触发类的什么私有方法7,python中经典类和新式类的区别8,示例1, 现有如下代码, 会输出什么:9,示例2, 现有如下代码, 会输出什么:10,请简

qq_44611586的博客 3085

AD9361 Fast Lock实战:Python脚本自动生成Profile寄存器配置(附完整代码)

本文详细介绍了利用Python脚本实现AD9361 Fast Lock Profile寄存器自动化配置的实战方案。通过解析频率合成公式、VCO约束及查表机制,脚本能根据目标频率一键生成完整的16进制寄存器序列,大幅提升射频系统开发中多频点切换的效率和准确性,并支持CSV、JSON、C头文件等多种输出格式,便于与FPGA/嵌入式系统集成。

weixin_29194693的博客 475

python考试编程题

3. a: while True:     s = raw_input('变量名为:')     if s == 'exit':         print '退出'         break     #判断是否由字母或下划线组成     if s[0].isalpha() or s[0] == '_':         for i in s[1:]:             if not (...

cxx2637969257的博客 1万+

SoC芯片时钟树优化实战:如何用分段CTS解决DDRPHY与Memory Controller的时序难题

本文深入探讨了SoC芯片时钟树优化中的分段CTS技术,重点解决DDRPHY与Memory Controller之间的时序难题。通过分析多域时钟架构的复杂性,提出三级分段CTS策略,并结合28nm移动SoC实战案例,展示如何通过Guide Buffer插入和本地段重构实现72%的跨域偏差改善。文章还涵盖5nm以下工艺的线阻变异、热梯度效应等特殊考量,为数字IC设计提供时钟树综合的高阶解决方案。

kkk56的博客 905

TI毫米波雷达人体生命体征(呼吸、心跳)信号提取算法(IWR6843ISK+DCA1000EVM)

本篇内容介绍的算法主要为传统的提取算法,但可实现在1m内呈现良好的检测效果,能够提取出非常可观的呼吸和心跳波形,但在超出1m的距离后便不适用这个算法了。远距离检测呼吸和心跳始终是这个领域一个很大的挑战。要实现远距离检测可在提取相位信号、分离呼吸和心跳信号上进行改进处理,例如线性解调提取相位、改进的VMD分离呼吸和心跳算法。

m0_61934621的博客 3万+

类与对象练习

1、面向对象三大特性,各有什么用处,说说你的理解。 答案: 封装:明确区分内外,控制外部对隐藏属性的操作行为,隔离复杂度。 隐藏实现细节,使代码模块化 多态:多种形态。好处:1、增加程序的灵活性(以不变应万变,不论对象千变万化,同一种方式调用。) 2、增加了程序的可扩展性 一个基类派生出多个子类,子...

aizhui7038的博客 636

ElementUI中的el-table解决宽度问题 - 根据内容自动撑开

在使用element-ui中,会发现表格组件el-table在未指定宽度情况下,会自动计算并给表格宽度赋值。但实际开发中,有时需要根据内容实际长度自动撑开显示,由内容的多少而决定表格的宽度,而不是默认宽度为100%。在默认情况下表格宽度为100%显示,并且列项未指定宽度情况下,剩余部分会平均分配宽度,本案例实际需求是由内容自动撑开显示。componentUpdated

觉醒法师的专栏 1万+

Python学习笔记大总结(我把我所有python笔记做了总结和学习顺序,点击即可进入相关博客。希望可以便于你们阅读)

这里写目录标题第一章:Python语法基础第二章:Python控制语句第三章:Python函数第四章:Python文件使用第五章:面向对象程序设计 不足的我会后续慢慢补充到该博客里 第一章:Python语法基础 (1)Python数据类型(整数,浮点数,复数,字符串,format()用法)(超详细笔记) (2)组合数据类型之序列类型(包含元组,列表,字符串)(Python学习笔记) (3)组合数据类型之集合类型(学习笔记)(Python) (4)(Python)组合数据类型之字典类型和操作(学习笔记) 第二

不吃辣的IT男 3万+

ResNet改进(20):融合Swin Transformer与ResNet

这种混合架构的设计理念是:在保留CNN强大局部特征提取能力的同时,引入Transformer的全局建模优势。我们实现的模型在ResNet18的基础上嵌入了一个简化版的Swin Transformer Block,旨在探索两种范式结合的可能性。通过在ResNet早期阶段引入Transformer模块,我们既保留了CNN强大的局部特征提取能力,又获得了Transformer的全局建模优势。本文提出的ResNet与Swin Transformer混合架构,探索了CNN与Transformer结合的可能性。

2401_82355416的博客 859

从模糊到清晰:让AI教相机自动对焦的实战指南

AI自动对焦技术:让模糊照片成为过去式 深度学习驱动的自动对焦技术正颠覆传统摄影,使相机能在复杂场景下智能锁定焦点。相比传统对焦方法在弱光、低对比度环境下的失效,AI通过学习"清晰-模糊"规律,实现全场景精准对焦。本文详细解析了该技术的三大优势: 自适应各种光线条件; 毫秒级对焦速度; 突破物理限制的精度。 通过PyTorch搭建的CNN模型,展示了从数据采集到模型训练的全流程实战方案,包括使用拉普拉斯算子评估图像清晰度等关键技术。该技术已成功应用于手机摄影、工业检测、无人机航拍和安防监

LXY_LOVE36的博客 348

Python入门学习笔记:面向对象编程

面向对象编程(Object-Oriented Programming,简称OOP)是一种通过组织对象来设计程序的编程方法。Python天生就是面向对象的模块化编程。

PQI_JiXian的博客 1949

YOLOv8融合改进 更换检测头为Detect_DyHead同时添加C2f_DBB模块

yolov8独家训练测试融合网络结构,提供详细步骤详细代码,手把手教你在yolov8官方包中把检测头更换为Detect_DyHead检测头,并且将原始的C2f模块更换成C2f_DBB模块,提高检测精度,亲测在多个数据集上有涨点!!!!!

分享一些自己改进代码的实例 4747

Python面向对象程序设计

本文系统介绍了Python面向对象编程的核心概念与高级特性,涵盖类与对象、封装、继承、多态四大基础概念,重点讲解了__init__、__str__等特殊方法的使用。文章深入探讨了类属性与实例属性、类方法与静态方法、属性装饰器等高级特性,并详细解析了单一职责、开闭原则等六大面向对象设计原则。通过丰富代码示例,展示了如何运用面向对象思想构建更优雅、可维护的Python程序,为开发者提供了从基础到进阶的完整知识体系。

Heliotrope_Sun的博客 981

深度解析:Android开发工程师(嵌入式系统方向)职位 - 技术需求、面试准备与发展路径

本文深入分析了嵌入式Android开发工程师的岗位要求和技术内涵。该职位需要掌握C/C++、Linux系统编程、硬件接口等核心技术,能够进行Android系统底层定制开发,包括HAL层实现、Framework修改、性能优化等工作。文章详细解读了岗位职责,梳理了必备技术栈,提供了针对性的面试问题与参考答案,并探讨了职业发展路径。这类岗位要求开发者兼具软件工程能力和硬件基础知识,适合在智能电视、机顶盒、车载系统等嵌入式领域发展的技术人员。

郑伟强dev的专栏 134

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

面向对象分析与设计Python版 面向对象思维

艾伦. C.凯创造性地提出面向对象编程思想,认为艺术和科学不分家。勤于思考、知识点融合、类比,产生新的思想。OOAD面向对象分析与设计相关术语。软件开发常规的两种思维方式。

分享、交流、合作 1293

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

一文入门Python面向对象编程(干货满满)

我一直企图找到一个通俗直观的例子来介绍面向对象。找来找去,发现什么都可以是面向对象,什么又都不是面向对象。后来我发现,人类认识社会的方式更多的就是面向对象的方式。

webxh6的博客 1023

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python学习笔记一:Python入门

Python学习笔记一:Python入门Python介绍特点应用范围什么时候不应该用 Python版本和兼容问题解决方案Python解释器Python开发入门Python下载安装和配置Python 开发环境交互模式(脚本shell 模式)IDLE 开发环境使用入门IDLE 介绍IDLE 实操第一个Python 源程序程序基本格式开始学习图形化程序设计绘制奥运五环标记 Python介绍 Python...

人在囧途的博客 1062

Python面向对象的跳棋项目设计与实现

本项目是一款具有多人对抗的棋类游戏系统,采用面向对象设计,最多供6个玩家一起线上对战的棋类游戏。项目主要采用Python语言完成,网络连接采用python内置模块完成,交互界面使用Tkinter布局构建,游戏棋盘采用Turtle模块绘制。

qq_61026911的博客 1773

python开发离不开的五大面向对象设计模式

本文简单介绍了一下python开发中常用的五大设计模式(记录贴

weixin_47694583的博客 1154

Pygame飞机大战实战:Python游戏开发入门与面向对象设计

面向对象编程(OOP)是构建复杂软件系统的核心范式,其封装、继承和多态特性为代码复用和模块化设计提供了坚实基础。在游戏开发领域,这一原理尤为关键,游戏世界本质上由众多交互对象构成。Pygame作为轻量级2D游戏开发库,通过事件循环、精灵管理和碰撞检测等机制,将OOP思想与实时交互需求紧密结合,极大降低了Python开发者入门游戏创作的门槛。从经典飞机大战项目入手,开发者不仅能掌握游戏主循环、资源管理等工程实践,更能深刻体会如何将玩家、敌机、子弹等游戏实体抽象为类,并利用精灵组进行高效批量更新与碰撞检测。这种

weixin_29012765的博客 330
上一篇: python入门学习笔记之领域模型
下一篇: Python入门开发学习笔记之C/S架构介绍
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值