自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1033)
  • 资源 (70)
  • 收藏
  • 关注

原创 Python进阶:打造可切片的Vector序列类(第2版)

在Python中,当我们为自定义类实现序列协议时,若直接委托给底层序列(如列表/数组),切片操作会返回底层序列类型,而非自定义类本身。这导致自定义类的功能缺失!目标:让Vector的切片操作返回新的Vector实例。

2025-05-28 08:30:23 226

原创 Python 序列的修改、散列和切 片(Vector类第2版:可切片的序列)

如 FrenchDeck 类所示,如果能委托给对象中的序列属性(如self.components 数组),支持序列协议特别简单。下述只有一行代码的__len可以看到,现在连切片都支持了,不过尚不完美。如果 Vector 实例的切片也是 Vector 实例,而不是数组,那就更好了。前面那个FrenchDeck 类也有类似的问题:切片得到的是列表。对 Vector 来说,如果切片生成普通的数组,将会缺失大量功能。想想内置的序列类型,切片得到的都是各自类型的新实例,而不是其他类型。

2025-05-28 08:29:52 318

原创 C#继承机制解析:为什么所有类的尽头都是object?

所有类(包括自定义类、系统类)都直接或间接继承自object类。唯一例外是object自身,它是继承树的根基(非派生类)。

2025-05-28 08:29:05 77

原创 C# 类和继承(所有类都派生自object类)

除了特殊的类object,所有的类都是派生类,即使它们没有基类规格说明。没有基类规格说明的类隐式地直接派生自类object。不加基类规格说明只是指定object为。这两种形式是语义等价的。一的非派生类,因为它是继承层次结构的基础。关于类继承的其他重要内容如下。

2025-05-28 08:28:31 99

原创 一文读懂 Python 协议与鸭子类型:为什么「像鸭子」比「是鸭子」更重要?

Python 的协议和鸭子类型打破了静态类型语言的束缚,通过「行为约定」而非「血缘继承」实现多态。降低模块间的耦合度鼓励「按需实现」的轻量化开发让内置类型与自定义类平等协作正如 Python 之禅所言:(请求宽恕比申请许可更简单)—— 这正是动态协议思想的终极体现。

2025-05-27 08:24:45 609

原创 C#面向对象核心:类继承详解

继承是面向对象编程的三大特性之一,允许新类(派生类)基于已有类(基类)进行扩展。通过继承,派生类可以“免费”获得基类的字段、方法等成员,并添加自身独有的功能。

2025-05-27 08:23:39 197

原创 C# 类和继承(类继承和访问继承的成员)

通过继承可以定义一个新类,新类纳入一个已经声明的类并进行扩展。可以使用一个已经存在的类作为新类的基础。已存在的类称为基类(base class),新类称为派生类(derived class)。派生类成员的组成如下:本身声明中的成员;基类的成员。要声明一个派生类,需要在类名后加入基类规格说明。基类规格说明由冒号和用作基类的类名称组成。派生类直接继承自列出的基类。派生类扩展它的基类,因为它包含了基类的成员,还有它本身声明中的新增功能。派生类不能删除它所继承的任何成员。

2025-05-27 08:23:04 200

原创 Python进阶:如何通过组合模式实现高性能Vector类?

【代码】Python进阶:如何通过组合模式实现高性能Vector类?

2025-05-26 08:30:10 295

原创 Python 序列的修改、散列和切 片(与Vector2d类兼 容)

我们将使用组合模式实现 Vector 类,而不使用继承。向量的分量存储在浮点数数组中,而且还将实现不可变扁平序列所需的方法。不过,在实现序列方法之前,我们要确保 Vector 类与前一章定义的Vector2d 类兼容,除非有些地方让二者兼容没有什么意义。

2025-05-26 08:29:38 268

原创 C#小课堂:访问器的访问修饰符,如何玩转封装?

—掌握访问器权限控制,代码更安全!

2025-05-26 08:29:04 377

原创 C# 深入理解类(访问器的访问修饰符)

的范式,那就是将set访问器声明为private,将get访问器声明为public。get之所以是public。成员的两个访问器的访问级别和成员自身相同。也就是说,如果一个属性的访问级别是public,在这一章中,你已经看到有两种函数成员带get和set访问器:属性和索引器。不过,你可以为两个访问器分配不同的访问级别。注意,在这段代码中,尽管可以从类的外部读取属性,但只能在类的内部设置它(本例中是。那么它的两个访问器的访问级别也是如此。访问器的访问修饰符有几个限制。的,是因为属性的访问级别是public。

2025-05-26 08:28:21 255

原创 Python类属性与实例属性的覆盖机制:从Vector2d案例看灵活设计

平衡了统一性与灵活性支持渐进式定制降低了代码重复体现了"约定优于配置"的思想理解这种机制有助于我们设计出更符合Python风格的API,构建既规范又可扩展的类层次结构。

2025-05-25 22:09:44 352

原创 符合Python风格的对象(覆盖类属性)

❹ Vector2d.typecode 属性的值不变,只有 v1 实例的 typecode 属。Vector2d 实例的 typecode 属性设为 ‘f’,那么使用 4 字节单精度浮。后,实例读取的 self.typecode 是实例属性 typecode,也就是把同。Vector2d.typecode 属性的默认值是 ‘d’,即转换成字节序列时使用。果想修改所有实例(没有 typecode 实例变量)的 typecode 属性的默。❹ 确认得到的字节序列长度为 9 字节,而不是之前的 17 字节。

2025-05-25 22:09:09 531

原创 C#索引器详解:让对象像数组一样被访问

使对象能够像数组一样被访问提高了代码的可读性和简洁性支持重载,提供多种访问方式需要合理设计参数和访问逻辑在实际开发中,索引器特别适用于集合类、矩阵类、配置类等需要按索引或键访问的场景。正确使用索引器可以显著提升代码的表达力和易用性。

2025-05-25 22:08:25 434

原创 C# 深入理解类(索引器)

索引器是一组get和set访问器,与属性类似。图7-15展示了一个类的索引器的表现形式,该类可以获取和设置string型值。

2025-05-25 22:07:39 799

原创 Python性能优化利器:__slots__的深度解析与避坑指南

当需要创建数百万个属性固定的对象时,默认的__dict__字典存储会造成巨大内存浪费。此时__slots__能通过元组结构取代字典,显著提升内存效率(实测节省58%内存)!

2025-05-24 21:44:19 994

原创 符合Python风格的对象(使用 __slots__ 类属性节省空间)

在类中定义__slots__ 属性之后,实例不能再有__slots__ 中所列名称之外的其他属性。当然,把__dict__添加到__slots__ 中可能完全违背了初衷,这取决于各个。示例 9-11 vector2d_v3_slots.py:只在 Vector2d 类中添加了__slots__ 属性。性时,RAM 用量高达 1.5GB;每个子类都要定义__slots__ 属性,因为解释器会忽略继承的__slots__ 属性。定义__slots__ 的方式是,创建一个类属性,使用__slots__ 这个名。

2025-05-24 21:43:36 731

原创 C#核心概念解析:析构函数、readonly与this关键字

析构函数:非托管资源的“保底”清理,优先用IDisposable。readonly:保护字段不被篡改,灵活应对运行时初始化需求。this关键字:增强代码可读性,避免歧义(但避免过度使用)。

2025-05-24 21:42:54 457

原创 C# 深入理解类(析构函数和this关键字)

(destructor)执行在类的实例被销毁之前需要的清理或释放非托管资源的行为。非托管资源是指通过Win32API获得的文件句柄,或非托管内存块。使用.NET资源是无法得到它们的,因此如果坚持使用.NET类,就不需要为类编写析构函数。

2025-05-24 21:42:15 431

原创 PyQt5高效布局指南:QTabWidget与QStackedWidget实战解析

当界面控件过多时,直接平铺会导致窗口拥挤、用户体验下降。

2025-05-24 21:40:11 500

原创 PyQt5高级界而控件(表格与树)

表格与树解决的问题是如何在一个控件中有觌律地呈现更多的数据。PyQt提供了两种控件类用于解决该问题,其中一种是表格结构的控件类:另一种是树形结构的控件类。

2025-05-23 08:45:14 739

原创 PyQt5高级界而控件(表格与树)

表格与树解决的问题是如何在一个控件中有觌律地呈现更多的数据。PyQt提供了两种控件类用于解决该问题,其中一种是表格结构的控件类:另一种是树形结构的控件类。

2025-05-23 08:44:35 581

原创 符合Python风格的对象(Python的私有属性和“受保护的”属性)

有或最多有一个下划线)命名实例属性,Python 会把属性名存入实例的__dict__ 属性中,而且会在前面加上一个下划线和类名。遵守使用一个下划线标记对象的私有属性很容易,就像遵守使用全大写。总之,Vector2d 的分量都是“私有的”,而且 Vector2d 实例都是“不可。性,那么在继承的方法中就会把 Dog 类的 mood 属性覆盖掉。有人编写了一个名为 Dog 的类,这个类的内部用到了 mood。如示例 9-10 中的最后一行所示,只要知道改写私有属性名的机制,任。

2025-05-23 08:40:02 226

原创 C#对象初始化语句:优雅创建对象的黑科技

提升代码可读性减少冗余构造函数支持动态初始化组合。

2025-05-23 08:39:28 553

原创 C# 深入理解类(对象初始化语句)

对象初始化语句扩展了创建语法,在表达式的尾部放置了一组成员初始化语句。例如,对于一个名为Point、有两个公有整型字段x和Y的类,可以使用下面的表达式创建。在此之前的内容中你已经看到,对象创建表达式由关键字new后面跟着一个类构造函数及其。该语法有两种形式,如下所示。一种形式包括构造函数的参数列表,另一种不包括。利用对象初始化语句,可以在创建新的对象实例时,设置字段和属性的值。第一种形式甚至不使用括起参数列表的圆括号。关于对象初始化语句要了解的重要内容如下。

2025-05-23 08:38:49 232

原创 PyQt5 GUI开发实战:菜单栏、工具栏、状态栏与打印功能详解

组件联动:菜单项和工具栏按钮可绑定同一QAction,实现状态同步。快捷键:action.setShortcut(“Ctrl+S”) 提升操作效率。国际化:通过tr()函数包裹文本,便于后期多语言适配。错误处理:在状态栏提示异常信息(如文件加载失败)。扫描关注微信公众号!

2025-05-22 08:31:56 902

原创 PyQt(菜单栏、工具栏与状态栏)(菜单栏、工具栏与状态栏)

在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。QMenu类提供了一个可以添加到菜单栏的小控件,也用于创建上下文菜单和弹出菜单。每个QMenu对象都可以包含一个或多个QAction对象或级联的QMenu对象。要创建一个弹出菜单,PyQtAPI提供了createPopupMenu()函数;menuBar()函数用于返回主窗口的QMenuBar对象;addMenu()函数可以将菜单添加到菜单栏中;通过addAction()函数可以在菜单中进行添加操作;

2025-05-22 08:31:10 860

原创 Python进阶:如何让自定义类Vector2d成为可散列对象?

属性不可变:通过私有属性+只读特性实现。正确实现__hash__和__eq__:确保哈希逻辑与相等性一致。通过本文的Vector2d改造,我们不仅解决了集合存储问题,还深入理解了Python对象哈希机制的核心设计。掌握这些技巧,能让你在构建数据结构、优化算法时更加游刃有余!扫描关注微信公众号!

2025-05-22 08:29:57 330

原创 符合Python风格的对象(可散列的Vector2d)

此外,还有用于支持内置的 complex() 构造函数的__complex__ 方法。注意,我们让这些向量不可变是有原因的,因为这样才能实现__hash__ 方法。为了把 Vector2d 实例变成可散列的,必须使用__hash__ 方法(还需。目前,我们可以为分量赋新值,如 v1.x = 7,Vector2d 类的代码并。如果定义的类型有标量数值,可能还要实现__int__ 和__float__ 方。只需正确地实现__hash__ 和__eq__ 方法即可。要__eq__ 方法,前面已经实现了)。

2025-05-22 08:29:01 709

原创 掌握C#静态构造函数:原理、特性与应用场景

在类首次被实例化(new)之前。在类的任何静态成员被访问之前。若两者均未发生,则静态构造函数不会执行。静态构造函数是C#中实现类型初始化逻辑的关键工具,尤其适用于全局状态管理和资源预加载。合理使用可提升代码性能和可维护性,但需谨慎处理其执行时机和潜在风险。扫描关注微信公众号!

2025-05-22 08:28:23 350

原创 C# 深入理解类(实例构造函数)

下面的代码使用静态构造函数初始化一个名为RandomKey的Random型私有静态字段。构造函数也可以声明为static。实例构造函数初始化类的每个新实例,而static构造函数。下面是一个静态构造函数的示例。注意其形式和实例构造函数相同,只是增加了static关键字。是由BCL提供的用于产生随机数的类,位于System命名空间中。通常,静态构造函数初始化类的静态字段。关于静态构造函数应该了解的其他重要内容如下。

2025-05-22 08:26:46 186

原创 PyQt5日期时间控件全解析:QCalendar与QDateTimeEdit实战指南

掌握QCalendar和QDateTimeEdit,能轻松应对90%的日期时间交互需求。建议结合具体业务场景灵活运用格式定制与信号机制,打造更智能的GUI应用。

2025-05-21 08:32:46 424

原创 PyQt5基本窗口控件(日历与时间)

QCalendar是一个日历控件,它提供了一个基于月份的视图,允许用户通过鼠标或键盘选择日期,默认选中的是今天的日期。也可以对日历的目期范围进行规定。QCalendar类中的常用方法如表4-34所示。运行效果图代码分析:在这个例子中有日历控件和标签控件,当前选定的日期显示在标签控件中。以下代码创建了QCalendarWidget组件,并设置该日历控件的最大日期和最小日期。从窗口组件中选定一个日期,会发射一个QCore.QDate信号,下面代码将此信。

2025-05-21 08:32:13 678

原创 Python格式化显示:从内置类型到自定义类

如果类没有定义__format__方法,Python会调用object.format,返回str(obj)。为了让自定义类支持格式化,我们需要实现__format__方法。format()和str.format() 是Python中强大的格式化工具。格式规范微语言为不同类型提供了灵活的显示方式。通过实现__format__方法,可以为自定义类添加格式化支持。掌握这些技巧后,你可以轻松控制数据的显示方式,甚至为自定义类设计独特的格式化语法!

2025-05-21 08:31:39 303

原创 符合Python风格的对象(格式化显示)

内置的 format() 函数和 str.format() 方法把各个类型的格式化方式委托给相应的__format__(format_spec) 方法。format_spec 是格❶ 格式说明符是 ‘0.4f’。❷ 格式说明符是 ‘0.2f’。代换字段中的 ‘rate’ 子串是字段名称,与格式说明符无关,但是它决定把 .format() 的哪个参数传给代换字段。第 2 条标注指出了一个重要知识点:‘{0.mass:5.3e}’ 这样的格式字。

2025-05-21 08:30:48 537

原创 深入理解C#实例构造函数:对象初始化的关键

确保对象在创建时处于有效状态提供多种初始化对象的方式控制对象的创建过程理解构造函数的工作原理对于编写健壮的面向对象代码至关重要。在实际开发中,应根据类的需求设计适当的构造函数,使对象的使用更加直观和安全。希望这篇文章能帮助你更好地理解和使用C#构造函数!如果你有任何问题或想法,欢迎在评论区留言讨论。

2025-05-21 08:30:12 541

原创 C# 深入理解类(实例构造函数)

构造函数在下列方面和其他方法相似。构造函数可以带参数。参数的语法和其他方法完全相同。构造函数可以被重载。在使用创建对象表达式创建类的新实例时,要使用new运算符,后面跟着类的某个构造函数。new运算符使用该构造函数创建类的实例。例如,在下面的代码中,Class1有3个构造函数:一个不带参数,一个带int参数,一个带string参数。Main使用各个构造函数分别创建实例。int Id;} //构造函数0} //构造函数1} //构造函数2Nameint Id;

2025-05-21 08:29:39 417

原创 PyQt5中的拖曳与剪贴板功能详解

PyQt5提供的拖曳和剪贴板功能强大而灵活,通过合理的实现可以显著提升应用程序的交互体验。充分理解MIME类型机制掌握基本的事件处理流程在实际项目中灵活应用这些技术注意跨平台兼容性和用户体验细节通过本文的讲解和示例代码分析,读者应该能够在自己的PyQt5项目中实现这些功能,并根据具体需求进行定制开发。

2025-05-20 08:24:11 777

原创 PyQt5基本窗口控件(拖曳与剪贴板)

为用户提供的拖曳功能很直观,在很多桌面应用程序中,复制或移动对象都可以通过拖曳来完成。基于MIME类型的拖曳数据传输是基于QDrag类的。QMimeData对象将关联的数据与其对应的MIME类型相关联。MIME类型的数据可以简单理解为互联网上的各种资源,比如文本、音频和视频资等,互联网上的每一种资源都属于一种MIME类型的数据。许多QWidget对象都支持拖曳动作,允许拖曳数据的控件必须设置QWidget.setDragEnabled()为True。

2025-05-20 08:23:33 242

原创 为什么Python需要classmethod和staticmethod?

Python的“显式优于隐式”Java通过语言规则强制方法归属,而Python用装饰器显式声明意图,既保留了灵活性,又提供了清晰的代码组织方式。理解这一点,才能真正驾驭Python的面向对象设计。

2025-05-20 08:22:46 381

C# 指定时间可具体到某个时间对日志文件进行删除

通过判断文件创建时间大于指定创建文件天数就删除文件,有两种方式一种是用timer控件在一段时间内进行执行,另一种方式是在每天凌晨执行一次,对大元指定天数的进行删除,详见代码。

2023-11-22

C# WinForm 读取多张图片、缩放、平移,缩放后可恢复原图

功能:① 打开文件夹读取多张通过上一张、下一张显示图片;④ 鼠标滚轮实现图片缩放平移,右击鼠标点击“原始图像实现原图显示;

2022-11-05

C# textbox输入数字,也可以软键盘输入

1、支持手动输入数字键盘,软键盘输入也可以; 2、支持输入上次记录显示; 3、可以根据需求选择数字,一键生产数字; 4、Textbox Combox Button Panel 构成;

2022-10-12

C# button textbox 控件实现功能输入数字

C# button textbox 控件实现功能: ① 可以硬件键盘输入数字也可以C#编写的软件键盘输入数字; ② 软键盘仅支持;

2022-10-07

TheCameraImaging.rar

通过AForge调用笔记本电脑摄像头,利用toolstrip实现控制打开视频关闭视频等功能。

2021-02-18

CPUMemoryUsage.rar

CPU物理内存使用率。

2021-02-04

StoneClock.rar

石英时钟。

2021-02-04

ScreenCapture.rar

屏幕截图:通过控制保存屏幕以实现截图的效果。

2021-02-04

PictureAutoPlay.rar

图片自动播放,主窗体中负责对相关功能进行设置,子窗体中负责对显示所打开文件夹的图片按照一定的时间进行显示。

2021-02-04

ImageThumbnail.rar

图片缩略图:利用folderBrowserDialog1、imageList1、statusStrip1、toolStrip1、Panel控件实现对打开图片文件夹并读取文件夹中的图片按照一定比例进行显示。

2021-02-03

ImageSynthesis.rar

读取两个图片并将两张图片合在一起。

2021-01-31

DrawTextOnThePicture.rar

读取图片通过在textbox控件上输入相关文字后在读取的图片上绘制相应的文字。

2021-01-31

CompressImages.rar

压缩图片:利用相关控件对图片进行批量或者单个按高清比例缩放。

2021-01-31

ChineseValidateCode.rar

中文验证码:通过随机产生四个中文汉字并通过picturebox控件显示出来,在textbox控件中输入并验证,button两个控件一共用来刷新生成的字符,一个用来在textbox中输入后点击确定。

2021-01-30

MusicPlayer.rar

简单的播放MP3格式的音乐播放器。

2021-01-30

ListViewFlash.rar

去闪烁,其实是利用两个控件进行对比:ListView、Panel控件来实现对数据的添加,一个存在闪烁一个不存在闪烁。

2021-01-30

FileSizeProgress.rar

根据复制文件大小显示精度条,代码中利用控件:textBox、button、folderBrowserDialog1、openFileDialog1实现对文件的复制。

2021-01-29

APopoverShowsProgress.rar

复制文件夹,通过主窗体的两个textBox控件以及三个button按钮、folderBrowserDialog1控件,复制文件子窗体弹出进度条。

2021-01-29

CalipersRichTextBox.rar

自定义卡尺控件并调用,利用RichTextBox控件自定义属性后显示刻度,刻度模式为厘米或毫米。

2021-01-29

CopyDataGridDataByImitatingExcel.rar

DataGridView控件模仿Excel复制选中的单元格内容。代码中利用DataGridView、button、contextMenustrip控件。

2021-01-29

PopuoWindowToRemind.rar

主窗体中有一个Button控件,通过控件控制子窗体的弹窗。

2021-01-28

LoadTheDisplayBarDynamically.rar

动态显示条纹加载,利用ProgressBar实现,通过button按钮控制。

2021-01-27

GetsTheClipboardImage.rar

通过读取图片使用button按钮实现对图片进行复制粘贴,利用imageList控件加载图像,每读取一张图通过操作均可复制。

2021-01-27

FilePathCopy.rar

拖拽文件复制文件:代码中利用Panel、listView、folderBrowserDialog1、button控件,将要复制的文件拖拽至ListView中点击复制按钮便可复制,支持的复制文件格式较少还有待完善代码。

2021-01-27

TossDisplayForm.rar

折叠显示窗体:一个主窗体一个子窗体,通过主窗体料两个Button控件实现控件显示子窗体,子窗体利用Picturebox控件设置新的关闭按钮图标。

2021-01-26

MouseThroughForm.rar

鼠标穿透穿透:contextMenuStrip、notifyIcon控件实现通过右击右下角右击鼠标选择不同类似实现变换。

2021-01-26

TheMouseThrough.rar

鼠标穿透:代码中利用日历控件、timer控件、菜单控件等实现鼠标穿透。

2021-01-25

HiddenToolbox.rar

隐藏工具:利用panel、picturebox、timer控件实现对工具的隐藏

2021-01-25

GetFileType.rar

显示文件类型,代码中利用listview控件及Form事件shown来实现。

2021-01-25

GetTheFileDirectory.rar

将文件夹拖拽至窗体内弹出对话框显示文件夹路径。

2021-01-25

CustomMaximizeMinizeButton.rar

自定义最大化最小化,代码中利用picturebox、Panel控件实现对窗体的最大化或最小化。

2021-01-25

CustomScreenSaver.rar

自定义屏幕保护:利用panel、button、Label、timer控件实现屏幕保护。

2021-01-24

FormFloatHiding.rar

窗体的浮动及隐藏:通过Panel、timer控件并加载Panel的鼠标事件实现。

2021-01-24

窗体换肤三种换肤模式.rar

通过鼠标右击选择换肤类型,代码中利用Panel、Picturebox、MenuStrip等控件。

2021-01-24

MagneticForm.rar

磁性窗体:本代码中三个窗体一个主窗体两个辅窗体,通过相应代码实现Button控件关闭或者打开另外两个窗体并与主窗体近邻在一起。

2021-01-23

DynamicallyDisplayMenusWithTreeLists.rar

1、树型动态显示列表,利用控件MenuStrip、toolStrip、treeView、panel、picturebox控件、值得下载学习。

2021-01-22

FocusChangeColor.rar

焦点变色:利用Label、TextBox控件,textBox控件中的Enter、Leave、KeyDown事件当光标在textBox中时颜色由白色变为蓝色。

2021-01-22

ScroolCaption.rar

代码中利用listBox、timer控件实现字幕的滚动。

2021-01-21

BorderLessForm.rar

1、利用Panel、Picturebox控件设置相关属性并添加相应代码实现无边框窗体

2021-01-21

ResizeForm.rar

1、代码中利用Panel、PictureBox控件; 2、通过利用上述控件来改变窗体的大小;

2021-01-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除