python装饰器与面向对象

Python面向对象编程:组合、方法与装饰器实践指南 面向对象编程(OOP)是现代软件开发的核心范式,其中组合(Composition)作为继承的替代方案,通过'有一个'关系实现对象间的灵活协作。组合模式在Python中表现为将类实例作为属性使用,相比继承能保持更扁平的类结构,提升代码可维护性。在游戏开发、系统设计等场景中,组合允许动态替换组件而无需修改类层次。方法(Method)作为对象行为的载体,Python支持实例方法、类方法和静态方法三种类型,配合特殊方法(魔术方法)可实现运算符重载等特性。装饰器(Decorator)则是Python的特色功能,通过@ 阅读详情

装饰器(装饰器就是用来装饰函数的函数)

普通的函数:

    def 函数名(形参):        # 变量名
        函数体
        return 变量|常量

    print 函数名(实参)

装饰器:

    def 函数名1(形参):       #此形参传递函数
        def 函数名2(形参):
            函数体
            return 变量|常量
        return 函数名  ##也就是函数2的地址

装饰器的调用有两种方法
1.@函数名1 #此方法作用在要使用的函数之上
2.函数=函数名1(函数) #此方法与上相同,方式不同,建议使用上面的
举例:

def dtimer(fun):
    def timer(*args):  # 高阶函数       #args = (1,2,3,4)
        start_time = time.time()
        fun(*args)                      # args =(1,2,3,4), 解包*(1,2,3,4)
        stop_time = time.time()
        return "run %s" % (stop_time - start_time)

    return timer  # 返回的是timer的地址,要执行该函数需要timer()


@dtimer  # fun1 = dtimer(fun1)
def fun1(*args):
    print "in the fun1....."
    print args
    time.sleep(1)

匿名函数

lambda 形参 : 返回值

主要作用于高阶函数调用函数中使用,以减少代码量,且不用定义函数名

面向对象编程

面向过程:所有的事情都要亲历亲为
面向对象:创建一个对象,所有的事情交给对象去完成

面向对象的一些关键名词

类 ===== 建房子的图纸 (三室一厅,两室一厅…….)
对象 ===== 实际建出来的房子(门牌号)
实例化 ==== 建造的过程(根据类来创建对象的过程)

class People(object):           # 类
    def __init__(self,name,age):        # 构造函数
        self.name = name               # 属性
        self.age = age
    def eat(self):                      #方法
        print " %s 正在吃辣条....." %(self.name)
    def echo_self(self):
        print self

tianfeng =  People("田峰",18)     # 通过类实例化出来的对象
print tianfeng
tianfeng.echo_self()        ##通过对象来调用方法

self系统创建出来的对象,我们实例化出来的对象,只是指向此对象的地址
访问对象属性的两种方式:
1.self.name
2.tianfeng.name

面向对象的三个特性:封装,继承,多态

封装:将所有的操作包装到一个不被外界看到的整体中,只对外开放部分提供的功能
继承:一个类可以继承另一个类,包括所有的变量,内置函数。。。
多态:在继承的前提下,可以自己编写相关函数来替代继承的函数,保持子类的独立性
多继承
- python的类可以继承多个,Java和C#只能单继承;
- 继承多个类,有两种算法:深度优先算法和广度优先算法;
- 类为经典类(class C:)时,多继承时使用深度优先算法;
- 类为新式类(class C(C1,C2))时,多继承时使用广度优先算法;
eg: D, C(D), B(D), A(B,C)
-深度优先:A->B->D->C
-广度优先: A->B->C->D

类的私有属性

当我们的类中存在一些不想被别人访问和修改的属性时,
我们可以将此属性变为私有属性
-创建方式:属性前加两个下划线

class People(object):
    def __init__(self, name, money):
        self.name = name
        self.__money = money  #此为私有属性

私有属性不能被访问
私有属性的实质:python内部将self._money给它重命名为类名__money

类的方法

有些情况使我们不能创建类的对象,但我们还需要调用类的方法,
此时就需要创建类的方法,此方法可以使用类名来调用,而不用实例化对像
-创建方式:@classmethod标记类的方法关键字,并且返回值为对象

 @classmethod       #类的方法关键字
    def from_str(cls,s):      # class,类方法的第一个参数是类本身,cls = Date
        year, month, day = map(int, s.split("-"))
        d = cls(year,month,day)     # d = Date(year,month,day)
        return d        # 对象

 d1 = Date.from_str('2018-10-19')   #调用

类的静态方法

静态方法也可以直接使用类名调用
-创建方式:@staticmethod标记类的静态方法关键字

    @staticmethod
    def is_date_legal(s):      # 静态方法,第一个参数既不是对象,也不是类本身,
        year, month, day = map(int, s.split("-"))
        return year >= 1970 and 0 < month <= 12 and 0 < day <= 31

类的私有属性

-类的属性,在内存中只需要存储一次;
-在构造函数中的属性,每实例化一个对象,就需要存储一次;

class People(object):
    country = "China"       #私有属性
    def __init__(self, name):   #构造函数中的属性
        self.name = name
Python面向对象编程:组合模式与装饰器实战 面向对象编程(OOP)是构建复杂软件系统的核心范式,其核心思想是通过类和对象来组织代码。Python作为支持多范式的语言,提供了灵活的组合(Composition)机制和强大的装饰器语法。组合模式通过对象引用来实现代码复用,相比继承更能体现现实世界的关联关系,典型应用包括电商系统的用户-支付模块解耦。装饰器作为Python的特色功能,可以在不修改原函数代码的情况下扩展行为,常用于实现日志记录、性能监控等横切关注点。在实际工程中,合理运用组合与装饰器能显著提升代码的可维护性和扩展性,特别适合构建需要频繁迭代的 阅读详情

相关推荐

bobo-2.4.0

bobo-2.4.0

Bobo Python 学习笔记

安装安装Bobo 可以通过通常的方式安装,包括使用。当然,您可以使用或。

keny-大成的博客 725

Python库 | bobo-2.0.0.tar.gz

python库。 资源全名:bobo-2.0.0.tar.gz

【Python】【有趣的模块】【Bobo】

【python web框架之 bobo的安装配置】 【Mac】 我的Mac环境,python3.5 1. 安装bobo : >>> pip3 install bobo 2. 配置环境变量: $: vi ~/.bash_profile 加一行:alias bobo = "地址" (我刚install完bobo后,在python3.5的bin里多了个bob...

weixin_30781433的博客 487

MTK Tunning ISP 模块面试总结

ISP面试问答

m0_72053187的博客 4540

机器人动力学与控制学习笔记(一)————机器人控制概述

一、概述 1、机器人控制的目的 对自由运动机器人来说,控制的目的是要控制机器人手端的位置和姿态(以后统一简称为位姿),即所谓位置控制问题。这时希望机器人手端所达到的位置称为期望位置或期望轨迹。期望轨迹可以在机器人任务空间中给出,也可以通过逆运动学关系转化为机器人关节空间中的期望轨迹。期望轨迹通常有两种形式:一种是一个固定位置(即固定点),另一种是一条随时间连续变化的轨迹。自由运动机器人位置控制的目的,是要使机器人手端从任意起始位置出发都能到达期望轨迹。当期望轨迹是固定点时的位置控制称为定...

冰与火的青春的博客 6883

Python面向对象进阶:类装饰器

一般来说,在Python类中不加修饰的方法叫做实例方法,即只有经过经过实例化之后,才能调用。但也存在另一种需求,即不创建类的对象,而直接调用类的方法。比如想通过类的方法进行初始化,或者干脆只是把类当作一个函数库。

微小冷的学习笔记 1206

HFSS/ADS仿真实操:手把手调优一个2.4GHz SAW滤波器的IDT结构

本文详细介绍了使用HFSS和ADS仿真工具优化2.4GHz表面声波滤波器(SAW)的IDT结构。从材料参数设置到IDT建模,再到参数化扫描与频率调谐,提供了实用的操作步骤和优化技巧,帮助工程师快速掌握SAW滤波器的设计方案与性能调优方法。

weixin_29197835的博客 533

Python基础-面向对象编程之装饰器

函数、方法或类定义的前面可以使用一个特殊的符号,称为装饰器,其目的是修改定义后面的行为。

hubing_hust的专栏 1万+

GB28181 —— 3、C++编写GB28181设备端,完成注册、注销、保活心跳、响应查询目录等功能(附源码)

GB28181 —— Win10下编写GB28181设备端,完成注册、注销、保活心跳、响应查询目录等功能(附源码)

1310

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

粒子群算法(PSO)的基本思想是模拟鸟群觅食机制,将鸟类的觅食方向分为自我认知部分和社会部分,个体自主探索群体周围空间的同时,也随着群体的主流方向前进,不断逼近最优目标。本文详解PSO算法基本概念,并给出ROS C++实现加深理解

FRIGIDWINTER的博客 2617

Python面向对象:装饰器

装饰器一、装饰器含义二、为什么需要装饰器装饰器 一、装饰器含义 python的装饰器本质上是一个Python函数。 它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。 简单的说装饰器就是一个用来返回函数的函数。 它经常用于一些场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。 概括的讲,装饰器的作用就是为已经存在的对象添加额外的功

zl202111的博客 674

Autosar进阶专栏索引

Autosar进阶专栏索引

赞的博客 3542

python 面向对象与装饰器

面向对象 类(class):现实世界中一些事物的封装(如:学生) 类:属性(如:姓名,成绩) 类对象 实例对象 引用:通过引用对类的属性和方法进行操作 实例化:创建一个类的具体实例对象(如:学生张三) class Student: def __init__(self,name,grade): self.name = name ...

baobali4982的博客 197

华为昇腾开发——多模型资源管理(C++)

在使用Ascend ACL(Ascend Computing Language)的ACLLite库进行多模型推理时,合理的资源管理至关重要。

如果想成为中心,那么就到中心去吧。 577

快速生成2D卡通人物的AI工具:开启Live2D角色创作的新时代

随着这一创新工具的推出,我们正见证着Live2D角色创作进入了一个全新的阶段。它不仅极大地简化了角色设计的过程,也为广大创作者提供了一种全新的表达方式。对于那些渴望将脑海中的构思迅速转化为现实的人来说,这无疑是一大福音。现在就访问项目主页,开始探索无限可能吧!t=O83A项目主页https://human3daigc.github.io/Textoon_webpage/

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 4839

python面试充电(3)面向对象、装饰器、包与模块

面向对象 关于面向对象解读,参考知乎一个回答https://www.zhihu.com/question/20275578/answer/26577791 python里面类其本质就是为了封装。把对象作为基本单元,把对象抽象成类,包括成员(即类的属性)和方法(即类的行为)。从而实现代码的封装和可复用性。封装起来的类,可以供外部调用(提供接口,比如某属性,某方法),无需关心细节。 优先使用组合...

XOng 221

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Python装饰器与面向对象编程的协同实战

本文聚焦Python核心知识点的实战结合,用“概念+极简示例”形式,帮初学者快速掌握类与对象、装饰器、生成器/迭代器的核心用法,尤其突出各知识点的协同场景。核心目标:掌握3个高频装饰器(@staticmethod/@classmethod/自定义),理解装饰器“增强函数/方法功能”的核心逻辑。核心逻辑:装饰器本质是“接收函数为参数,返回新函数的函数”,用@语法简化调用。代码示例:实现一个“计算函数执行时间”的装饰器。# 自定义装饰器:计算函数执行时间。

Ljq2022144238的博客 475

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python进阶:装饰器与面向对象编程实战解析

Python作为一门动态语言,其高阶函数特性与面向对象机制是构建复杂系统的关键。装饰器基于闭包实现,通过@语法糖实现函数功能扩展,在Web框架路由、性能监控等场景广泛应用。面向对象编程中,类方法与静态方法的合理使用能提升代码组织性,而属性访问控制(@property)和MRO规则则是设计可扩展系统的核心知识。针对装饰器元信息丢失、可变默认参数等常见问题,可采用functools.wraps和None默认值等工程解决方案。掌握这些进阶特性,能够显著提升代码质量与开发效率,是Python开发者从入门到精通的必经

一个2年工作经验的程序测试员 454

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python面向对象编程:组合、方法与装饰器进阶指南

面向对象编程(OOP)是现代编程语言的核心范式,通过封装、继承和多态三大特性构建模块化代码。Python作为支持多范式的语言,其OOP实现具有独特灵活性,其中组合(Composition)、方法(Methods)和装饰器(Decorators)是构建复杂系统的关键技术。组合通过对象包含实现代码复用,比继承更具灵活性;方法是定义对象行为的核心单元,包括实例方法、类方法和静态方法三种类型;装饰器则以非侵入方式扩展功能,广泛应用于日志、权限等横切关注点。掌握这些技术的组合应用,能够设计出高内聚低耦合的系统架构,这

weixin_32306957的博客 327

[Python]面向对象编程:封装特性与@property装饰器

Python通过命名约定实现封装,双下划线开头的属性会被改名@property装饰器可以将方法转换为属性访问配合@属性名.setter和@属性名.deleter可以实现属性的修改和删除封装可以提高代码的安全性和可维护性。

2301_76849908的博客 599

Python面向对象高级特性:属性装饰器与描述符的终极指南

Python面向对象编程中,属性装饰器与描述符是提升代码优雅性和可维护性的关键工具。本文将通过实际项目案例,带你快速掌握这两项高级特性的使用方法与最佳实践,让你的Python代码更加专业、高效。 ## 一、什么是属性装饰器?简单又强大的访问控制 属性装饰器(`@property`)是Python提供的一种简洁语法,用于将类方法转换为类属性。它允许你在获取、设置或删除属性时添加额外逻辑,而无需改

gitblog_00100的博客 793

第20节--python面向对象编程与装饰器

1. 面向对象编程Python支持面向对象编程类(class):现实世界中一些事物的封装 (如:学生) 类:属性 (如:名字,成绩)类对象 实例对象引用:通过引用对类的属性和方法进行操作 实例化:创建一个类的具体实例对象 (如:学生张三)class Student: def __init__(self,name,grade): self.name = name

忧郁一休 580

python学习 day23面向对象之封装应用与装饰器

面向对象之封装应用与装饰器封装之隐藏属性之理论知识隐藏属性应用详解1、把数据属性隐藏起来的意义是:在类内开放接口,让外界使用者通过接口来操作属性值,我们可以在接口之上附加任意的逻辑2、把功能属性隐藏起来:隔离复杂度对类宝具之装饰器三天王@property:提供属性数据的查改删接口@classmethod:被装饰函数绑定给类,可以由类来调用,会把类当作第一个参数传入,其实对象也能正常调用@staticmethod:被绑定函数既不与类绑定也不与对象绑定,就是一个普通的函数,谁都可以来调用,没有自动传参的效果总结

wuzeipero的博客 359

Python面向对象编程:封装、@property装饰器与数据访问控制

在面向对象编程中,封装是核心概念之一,它通过隐藏对象内部状态并提供可控的访问接口来提升代码的安全性和可维护性。其原理在于将数据与操作数据的方法绑定,实现数据验证、业务规则执行和状态一致性维护。这一机制的技术价值在于构建健壮的软件组件,降低模块间耦合,便于未来扩展和重构。在实际应用场景中,封装广泛用于业务模型设计、API接口定义和系统配置管理等领域。本文以Python中的@property装饰器为例,深入探讨了如何优雅地实现获取器和设置器,解决数据访问控制问题,并介绍了计算属性和只读属性的实现方式,帮助开发者

weixin_29248611的博客 319

Python基础入门篇【32】--面向对象:装饰器与类的常用装饰器

装饰器也是一种函数可以接受函数作为参数可以返回函数接收一个函数,内部对其处理,然后返回一个新函数,动态的增强函数功能比如,a函数是一个装饰器,将c函数在a函数中执行,在a函数中可以选择执行或不执行c函数,也可以对c函数的结果进行二次加工处理。被装饰器装饰的函数不直接调用,而是作为一个参数传入装饰器中。#下面是一个装饰器,一个装饰器包含外围函数和内嵌函数defout(func_args)#外围函数definter(*args,**kwargs)......

weixin_44629511的博客 526
上一篇: 用python完成简单面试题2
下一篇: python作业(面向对象)
python_bobo
博客等级 码龄9年 15粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值