python class自身返回值研究
在python中,如果你写了这样一串代码:
import datetime a = datetime.date(2021, 9, 1)
b = "2021-09-01"
print(a, b)
print([a, b])
print(type(a), type(b))
你会发现 a 是一个datetime.date的类
而b是个字符串
但在输出时,却出现了这样的结果
2021-09-01 2021-09-01
[datetime.date(2021, 9, 1), '2021-09-01']
<class 'datetime.date'> <class 'str'>
可以发现,在a单独输出时,竟然输出了字符串!
而a的类型依然是datetime.date的类
这是怎么回事呢
要知道,在python中定义一个类,输出这个类会输出这个类的信息
class test:
pass a = test()
print(a)
输出:
<__main__.test object at 0x000001B344057070>
那为什么datetime.date返回的不是以上输出的,而是一个字符串呢?
我就打开了datetime.py一看究竟
结果发现了几行代码

可以看到使用了__repr__
通过我仔细的研究
我发现__repr__可以修改class的输出信息
class test:
def __repr__(self):
return "This is a class" a = test()
print(a)
输出:
This is a class
又回到开头的问题
可以看到在数组输出是已经可以输出__repr__修改过的信息
但是在单独输出是,还是输出了与__repr__不同的信息
于是我又打开了datetime.py

看到了__str__可以定义class的格式
不过__str__需要赋值一个函数的名称
class test:
def __repr__(self):
return "This is a class" def make(self):
return "You make a class" __str__ = make a = test()
print(a)
输出:
You make a class
总结
从datetime的发现中学到了很多关于class的更深入的使用
可以使用__repr__和__str__设置class的基本信息
python class自身返回值研究的更多相关文章
- python获取线程返回值
python获取线程返回值 前言 工作中的需求 将前端传过来的字符串信息通过算法转换成语音,并将语音文件返回回去 由于算法不是我写的,只需要调用即可,但是算法执行速度相当缓慢 我的优化思路是,将前端的 ...
- Python入门篇-返回值和作用域
Python入门篇-返回值和作用域 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.返回值 1>.返回值概述 Python函数使用return语句返回“返回值” 所有函数都 ...
- python os.system()返回值判断
最近遇到os.system()执行系统命令的情况,上网搜集了一下资料,整理如下,以备不时之需,同时也希望能帮到某些人. 一.python中的 os.system(cmd)的返回值与linux命令返回值 ...
- python函数的返回值 讲解
我们一起来聊聊python函数返回值的特殊情况,之前我也碰到过类似方面的问题,到后来查阅了一些资料后,发现原来是这样. 首先,写函数的时候,一定要写函数的文档,这样方便我们识别函数是做什么的.我记得很 ...
- Python函数之返回值、作用域和局部变量
一.函数返回值 说到返回值,相信大家肯定都认识,没错,就是return. 所谓返回值可以这样理解:函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回. 那具体怎么用呢?接 ...
- python函数的返回值
返回值:return1.没有返回值 #不写return #只写return:结束一个函数 #return None2.有一个返回值 #可以返回任何数据类型 #只要返回就可 ...
- Python赋值没有返回值+笔试
>>> def test(): i = 1 return i=2 SyntaxError: invalid syntax 原因是python 中赋值语句没有返回值,这里不是C++
- Python 基础之返回值与函数使用与局部变量和全局变量locals() 和 globals()
一.函数的返回值 return return: 自定义返回值,返回到哪里? 返回到函数的[调用处]1.return 后面可以跟上六个标准数据类型,除此之外,可以跟上 类对象,函数,如果不写return ...
- python学习——函数返回值及递归
返回值 return语句是从python 函数返回一个值,在讲到定义函数的时候有讲过,每个函数都要有一个返回值.Python中的return语句有什么作用,今天小编就依目前所了解的讲解一下.pytho ...
随机推荐
- 关于SequenceInputStream
两个流合并时: package stream.sequence; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...
- mybatis根据表逆向自动化生成代码(自动生成实体类、mapper文件、mapper.xml文件)
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- rabbitMq可靠性投递之手动ACK
#手动应答#spring.rabbitmq.listener.simple.acknowledge-mode=manual#spring.rabbitmq.listener.simple.acknow ...
- 登录用户出现‘’-bash-4.2$‘’的问题解决
Linux系统切换用户时如显示的是-bash-4.2# 而不是user@主机名 + 路径的显示方式,以往一直用的脚本也不能执行起来: 原因是在用useradd添加普通用户时,有时会丢失家目录下的环境变 ...
- 安全强化机制——SELinux
1.基本 SELINUX 安全性概念 SELINUX(Security Enhanced Linux),意思是安全增强型Linux, 是可保护你系统安全性的额外机制 在某种程度上 , 它可以被看作是与 ...
- cmd(命令行 )的命令
cmd是command的缩写.即命令行 CMD命令锦集 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是 ...
- 通过 layout 探索 kratos 运行原理
创建项目 首先需要安装好对应的依赖环境,以及工具: go 下载 protoc go install google.golang.org/protobuf/cmd/protoc-gen-go@lates ...
- 假期作业03:使用IDE开发你的Java程序
假期作业03:使用IDE开发你的Java程序 一.使用Eclipse创建一个Java项目HelloWorldPrj,编写一个Java程序并运行. 首先要下载eclipse. (注意这里要选一个中国的, ...
- HashMap 为什么线程不安全?
作者:developer http://cnblogs.com/developer_chan/p/10450908.html 我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线 ...
- java线程池-工作队列workQueue
线程池之工作队列 ArrayBlockingQueue 采用数组来实现,并采用可重入锁ReentrantLock来做并发控制,无论是添加还是读取,都先要获得锁才能进行操作 可看出进行读写操作都使用了R ...