Python_day_08_魔术方法

【学习心得笔记】Python100天-第一部分Day01-Day15 本文是个人对于项目的学习的一些心得和笔记,简单记录,如有不妥之处,欢迎批评指正。 阅读详情

1._format魔术方法

_formats = {
    'ymd': '{d.year}-{d.month}-{d.day}',
    'mdy': '{d.month}/{d.day}-{d.year}',
    'dmy': '{d.day}/{d.month}/{d.year}',

}
class Date(object):
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

    def __format__(self, code):
        if code == '':
            code = 'ymd'
        fmt = _formats[code]
        return fmt.format(d=self)

d = Date(2018, 1, 9)

print format(d, 'ymd')
print format(d, 'mdy')
print format(d, 'dmy')

# __format__    format(d)


# format(d, 'ymd')  === "2018-01-09"

2._切片魔术方法

from collections import Iterable

class Student(object):
    def __init__(self, name):
        self.name = name
        self.score = [100, 90, 89]

    # 判断一个类的对象是否可以迭代, 看类是否有__iter__方法
    # 自己定义迭代的规则;
    def __iter__(self):
        return iter(self.score)

    def __eq__(self, other):
        avg_score1 = sum(self.score)/len(self.score)
        avg_score2 = sum(other.score)/len(other.score)
        return  avg_score1 == avg_score2

    def __le__(self, other):
        pass

    def __ge__(self, other):
        pass

    def __getitem__(self, item):
        # 访问某个属性时, s['key']
        pass

    def __setitem__(self, key, value):
        # 给某个属性赋值使用; s['key']=value
        print key, value

    def __delitem__(self, key):
        pass

s1 = Student('fentiao')
s2 = Student('fendai')
# print isinstance(s1, Iterable)
# for i in s1:
#     print i
#
# print s1 ==  s2
# print s1 >  s2

print s1[1:2]

3._切片魔术方法

from collections import Iterable


class Student(object):
    def __init__(self, name):
        self.name = name
        self.score = [100, 90, 89, 100, 89]

    def __getslice__(self,i, j):
        return  self.score[i:j]

    def __setslice__(self, i, j, item):
        self.score[i:j] = item


    def __delslice__(self, i, j):
        del self.score[i:j]


s1 = Student('fentiao')
print s1[1:4]
s1[1:4]=[0, 0, 0]
print  s1[1:5]

s1[1:4]= [100, 90, 80]

del s1[0:3]

print s1[0:5]

4._字符串显示之format

# format通过位置符号
print "{0:.2f}:{1:d}:{0}".format(1,2)

# format使用名称
print "max:{max}\n\nmin:{min}".format(min=10, max=100)

# 通过属性

class Book(object):
    def __init__(self, name, author, state, bookIndex):
        self.name = name
        self.author = author
        # 0: 借出, 1:未借出
        self.state = state
        self.bookIndex = bookIndex

    def __str__(self):
        return "Book({d.name}, {d.author}, {d.state})".format(d=self)

b = Book('a','a', 1, 'IN9008')
print b

5. 格式化元组的具体项

point = (1,3)

print 'X:{0[0]};Y:{0[1]}'.format(point)

goods = [
    ("001", 'computer', 100, 4000),
    ("002", 'apple', 1000, 4),
    ("003", 'xiaomi', 100, 3000),
]

formatter = "编号:{0[0]}\t 名称:{0[1]}\t数量:{0[2]}\t价格:{0[3]}".format
for i in map(formatter,goods):
    print i

6._getitem魔术方法

from collections import Iterable

class Student(object):
    def __init__(self, name):
        self.name = name
        self.score = [100, 90, 89]

    def __getitem__(self, item):
        # 访问某个属性时, s['key']
        return self.__dict__[item]

    def __setitem__(self, key, value):
        # 给某个属性赋值使用; s['key']=value
        # print key, value
        if isinstance(key, str):
            try:
                node = self.__dict__[key]
            except:
                self.__dict__[key] = value
        self.__dict__[key] = value

    def __delitem__(self, key):
        pass

s  = Student('fentiao')
print s.__dict__
s['key'] = 'value'
s['hello'] = 'a1'
s['key1'] = 'value2'
print s['key1']
UniApp实现多端支付功能完整实现指南 支付业务流程多端支付实现安全性保障异常处理最佳实践支付基础知识多端支付实现统一支付封装安全性处理异常处理最佳实践根据具体业务场景选择合适的支付方式注重安全性和用户体验做好异常处理和日志记录持续优化和改进支付流程关注我,持续分享前端项目开发经验! 阅读详情

相关推荐

Docker离线部署OpenWebUI操作步骤

docker离线部署openwebui

m0_49333265的博客 4354

Day25 与类相关的魔术方法

1.与类相关的魔术属性 # __dict__ 获取对象或类的内部成员结构# __doc__ 获取对象或类的内部文档# __name__ 获取类名函数名# __class__ 获取当前对象所属的类# __bases__ 获取一个类直接继承的所有父类,返回元组 2.反射 # 概念:通过字符串去操作类对象 或者 模块中的属性方法# (1)类中的反射#hasattr() 检测对象/类是否有指定...

weixin_30266829的博客 89

深度学习之基于Pytorch手指静脉识别系统(

一、项目背景与目标手指静脉识别技术是一种新兴的生物特征识别技术,它依据人类手指中流动的血液可吸收特定波长的光线这一科学原理,利用手指内的静脉分布图像来进行身份识别。与传统的生物识别技术(如指纹识别)相比,手指静脉识别技术具有不易伪造、识别精度高、非接触性等特点,因此在安全性要求较高的场景(如金融、医疗、公安等)具有广阔的应用前景。本项目旨在利用PyTorch深度学习框架,构建一套高效、准确的手指静脉识别系统。

Q1744828575的博客 833

面向对象高级特性之--魔术方法

一.定义 在python中,所有用“__”包起来的方法

ANingL的博客 379

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

SpringSecurity(15)——OAuth2密码模式

SpringSecurity Oauth2密码模式

peng_gx的博客 1521

【Python篇】Python基础——08day.面向对象编程中类和对象的基本概念及属性和方法的常见分类和使用场景

面向对象编程(OOP)通过类和对象组织代码,强调现实世界思维,核心特性包括封装、继承、多态和抽象。类是对象的模板,定义了属性(特征)和方法(功能);对象是类的实例,具有具体状态。属性分为实例属性和类属性。方法包括实例方法、类方法(操作类,使用@classmethod)、静态方法(独立逻辑,使用@staticmethod)。构造方法(init)初始化对象属性,而魔术方法(如__str__、add)自定义行为,使对象支持运算符或字符串表示,提升代码复用性和扩展性。

打瓦打go打劫打三角洲,无聊喜欢打火影 1388

在 SAP Gateway 主机上把 SAML 2.0 配置为 Service Provider:从架构到落地的完整实战

本文详细介绍了在SAP Gateway主机上配置SAML 2.0作为Service Provider的全流程。从概念梳理到实际操作,涵盖了关键步骤:启用本地SP服务、通过反向代理导出元数据、在IdP侧完成对接、配置信任关系与Artifact绑定、设置NameID身份联合等核心环节。特别强调了HTTP Artifact绑定的背道通信机制和证书配置要点,并针对常见错误提供了排障指引。文章注重实操性,结合SAP官方文档与社区最佳实践,为运维团队提供了一套完整的SAML SSO实施框架。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 150

Day08: Python魔塔指南:从零打造你的OOP游戏世界

想象你正在设计一款社交应用,每个用户都需要有名字、年龄和个人主页。

yezi1238的博客 250

29、智能问答系统:原理、挑战与实现

本文深入探讨了智能问答系统的原理、挑战与实现方法。从智能问答系统的定义、重要性、问题类型和构建步骤,到实现中的歧义问题、数据集创建及基于规则的系统实现,全面解析了这一自然语言处理领域的重要应用。同时,文章还介绍了智能问答系统的应用场景、发展趋势以及面临的挑战与应对策略,为读者提供了一个全面而深入的理解框架。

redis7keeper的博客 163

openclaw : 无法将“openclaw”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方案

本文主要介绍了openclaw : 无法将“openclaw”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案,希望能对使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

切片魔术方法

__getslice__(self,i,j)参数为切片索引,步长可有可无class Student(object): def __init__(self,name): self.name=name self.score=[10,11,12,13,14,15] def __getslice__(self,i,j): return self.

xixlxl的博客 343

数学建模模型总结

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

python基础语法—day08(笔记)

文章目录主要内容:1.包的概念2.面向对象的基本语法3. __slots__ 属性的使用4.python魔法方法 主要内容: 1.包的概念 一个程序模块太多,需要建立一个文件夹来管理这些模块,就有了包的概念。 什么是包?可以将多个具有相似或者有关联的多个模块放在一个文件夹中,便于统一管理。这个文件夹我们就可以称之为包 test2.py: x='我的test2模块' test1.py: y='我的test1模块' test.py: from test2 import x import test1 pri

weixin_43497769的博客 127

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【玩转python】入门篇day17-类和对象

类和对象、构造函数、析构函数、变量私有化以及如何获取私有化变量

j15087159186的博客 2698

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

_iter魔术方法,__ge__()等

from collections import Iterable class Student(object): def __init__(self,name): self.name=name self.score=[100,90,89] def __iter__(self): print '判断self.score是否可迭代' ##se

xixlxl的博客 397

Python学习day16-类与对象

它封装了数据(属性)和与这些数据相关的操作(方法)。通过类,你可以创建具有特定属性和方法的对象。类定义了一个对象的结构,包括它包含的数据(通过变量表示)和它可以执行的操作(通过函数表示,但在类中称为方法)。当你创建一个类的实例(即对象)时,你可以使用这个对象来访问其属性和方法。这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称之为∶魔术方法。上文学习的_init_构造方法,是Python类内置的方法之一。·构建类对象的传参会传递给构造方法,借此特性可以给成员变量赋。_lt_小于、大于符号比较。

凯的博客 641

AI学习 Day08 面向对象基础(中)

本文章最初发布在 XJHui’s Blog,未经允许,任何人禁止转载! 注意:最新修改版本已发布在 这里,点击前往查看! 析构方法 当一个对象被删除或者被销毁时,python解释器默认会调用一个_del_()方法也叫析构方法。 方法特点 _del_()方法是一个魔术方法 程序运行结束会释放所有内存,就是通过调用del方法实现的 在程序中删除一个对象也会调用del方法 使用方法 情况一:程序结束,解释器自动调用del方法释放内存: class Animal: def __init__(se

XJHui 454

Day16 oop基本实现 类——python学习之路

类介绍定义成员方法中的selfoop初始化方法魔术方法初始化方法__init__析构方法__del__初始析构顺序练习常见问题 介绍 类名的书写规范, 建议使用驼峰命名法  大驼峰: MyCar XiaoMi  小驼峰: myCar xiaoMi 一个类有特征和功能两个内容组成:  特征在编程中就是一个变量, 在类中称为 属性  功能在编程中就是一个函数, 在类中称为 方法 定义 # 定义一个汽车的类 class Cart(): # 属性 ==> 特征 ==> 变量

波本Bouborn的博客 338

day12

01.构造方法与解析方法 from collections import Counter class People(object): # 实例化对象时自动执行 def __init__(self, name, age): # 把属性和对象名绑定在一起, 便于访问对象的属性. self.name = name self.age =...

zhangyubo114285的博客 174

Python Cookbook 8类与对象(待补)

目录 8.1 改变对象的字符串显示 8.2 自定义字符串的格式化 8.3 让对象支持上下文管理协议 8.4 创建大量对象时节省内存方法 8.5 在类中封装属性名 8.6 创建可管理的属性 8.7调用父类方法 8.8 子类中扩展property 8.9 创建新的类或实例属性 8.10 使用延迟计算属性 8.11 简化数据结构的初始化 8.12 定义接口或者抽象基类 ...

qq_42105144的博客 270

《小白初识python之十章 模块的导入 和 OS模块的常用操作》

一、概念 1、模块 .py文件,.pyc 2、包 __init__.py 二、模块导入 1、分类 1.1 自定义的、第三方库、python自带 2、导入方式 查看python默认找包的目录 import sys print(sys.path) 2.1 import 模块名 1、导入的是py文件 2、查看python默认找包的目录(了解) 2.2 from 模块名 import 类、变量、函数 2.3 from 模块.

Alex_l_00的博客 407

软件测试之python高级软件测试开发第7期

│ │ ├── [420M] 20210519_to_internal_value与to_representation、save_create_update.mp4。│ │ ├── [282M] 20210514_序列化输入_数据校验_write_only_read_only参数.mp4。│ ├──20210607_httprunner_变量_环境变量_函数_extract_validate_参数化/

niwoxiangyu的博客 879

【Python进阶】Python时间与日期处理的艺术

在Python中,对时间与日期的处理犹如编织一首关于时间流转的交响曲。从基本的time模块提供的底层时间戳操作,到datetime模块提供的丰富日期与时间对象,再到calendar模块带来的日历功能,Python为开发者提供了一套完备的时间管理工具箱。在实践中,我们学会了如何创建、操作、比较datetime对象,以及如何在不同时区间进行转换。此外,通过dateutil库实现了灵活的日期计算,而schedule和apscheduler库则助力我们实现复杂的定时任务调度。

weixin_44800376的博客 1227

python面向对象特性_python学习之面向对象高级特性

05_类属性鱼实例属性.pyimport randomclass Turtle(object):# power是类属性。power = 100def __init__(self):# x,y:实例属性.self.x = random.randint(0, 10)self.y = random.randint(0, 10)#1). 类属性不管有多少个对象, 都只存储一份。 实例属性存储的个数取决于实...

weixin_39952190的博客 93

【python】41_面向对象编程的高级特性

1.类属性与实例属性 类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本。 实例属性不被所有类对象的实例对象所共有,在内存中的副本个数取决于对象个数。 下面看这个例子: """1)类属性不管有多少个对象,都只存储一份。实例属性存储的个数取决于实例的个数""" class Turtle(object): #power是类属性 power = 100 def __init__(self,x,y): #x、y是实例属性 s

potizo的博客 286

php怎么输出常量,php中输出常量

PHP手册 – 变量和常量变量php中变量的定义,就是就在某一个单词前面加上“”。这是php的特色,∗∗我想到的一个好处就是和常量做区分。另外,linux的shell编程中,”。这是php的特色,∗∗我想到的一个好处就是和常量做区分。另外,linux的shell编程中,有取值的意思。**。赋值方式也能体现php作为弱类型...文章文艺小青年2017-03-30934浏览量PHP 魔术变量PHP魔...

weixin_39919165的博客 1198
上一篇: Python_day_08_类属性
下一篇: lvs+keepalived
GodDevin
博客等级 码龄9年 39粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值