django学习-20.python3中的特殊方法【__str__】的作用
目录结构
2.1.当使用print打印一个类被实例化后生成的对象的时候,若类里有定义了【__str__】特殊方法,是打印出这样的数据:【__str__】特殊方法的返回值
2.2.当使用print打印一个类被实例化后生成的对象的时候,若将类里的【__str__】特殊方法注释之后,是打印出这样的数据:对象是由哪一个类创建的对象信息以及在内存中的内存地址
1.前言
我们在django里创建一个模型类时经常在模型类里使用这个【__str__】特殊方法,但刚接触这个特殊方法的人肯定都理解不了这个特殊方法能实现什么作用。
所以我们必须知道这个特殊方法【__str__】如何使用。
特殊方法【__str__】的相关知识点:
①.【__str__】是python3里的其中一个特殊方法。
②.【__str__】特殊方法一般是用于返回自己定义的返回值(返回值默认是对象的描述)。
③.【__str__】特殊方法的返回值的数据类型只能为字符串。
2.【__str__】特殊方法的具体使用
2.1.当使用print打印一个类被实例化后生成的对象的时候,若类里有定义了【__str__】特殊方法,是打印出这样的数据:【__str__】特殊方法的返回值
2.1.1.首先,编写这些代码内容
class Person:
""" 定义一个类Person,表示一个人"""
def __init__(self,name,weight):
self.name = name
self.weight = weight def __str__(self):
return "我的名字叫:%s;体重是:%skg;" % (self.name,self.weight)
2.1.2.接着,执行这些代码内容
# 创建2个对象
xiaoming = Person("小明",56)
xiaomei = Person("小美",44) # 打印这2个对象
print(xiaoming)
print(xiaomei)
2.1.3.接着,看打印日志
我的名字叫:小明;体重是:56kg;
我的名字叫:小美;体重是:44kg;
2.2.当使用print打印一个类被实例化后生成的对象的时候,若将类里的【__str__】特殊方法注释之后,是打印出这样的数据:对象是由哪一个类创建的对象信息以及在内存中的内存地址
细节:
①.每个对象分配的内存地址都是唯一的,所以我们才总说对象是唯一的;
②.当程序进程都结束后,一个类被重新实例化后生成的对象的内存地址是新的内存地址;
2.2.1.首先,编写这些代码内容
class Person:
""" 定义一个类Person,表示一个人"""
def __init__(self,name,weight):
self.name = name
self.weight = weight # def __str__(self):
# return "我的名字叫:%s;体重是:%skg;" % (self.name,self.weight)
2.2.2.接着,执行这些代码内容
# 创建2个对象
xiaoming = Person("小明",56)
xiaomei = Person("小美",44) # 打印这2个对象
print(xiaoming)
print(xiaomei)
2.2.3.接着,看打印日志
<__main__.Person object at 0x0000000001E498C8>
<__main__.Person object at 0x0000000001E49948>
3.相关学习资料
其他关于特殊方法【__str__】的知识点学习,可以查看这篇文章:https://www.runoob.com/note/41154
django学习-20.python3中的特殊方法【__str__】的作用的更多相关文章
- Django Admin 在内联中覆盖保存方法(admin.TabularInline)
一 使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7 (Windows x86-64 executable in ...
- django中将views.py中的python方法传递给html模板文件
常规的模板渲染 from django.db import models # Create your models here. class ArticalType(models.Model): cap ...
- Python3中的__new__方法以及继承不可变类型类的问题
最近在学到Python中的__new__方法时被弄懵逼了,一开始实在是很难理解,有很多地方想不通(本人强迫症).最近自己慢慢思索得出了能说服自己的理解: 说__new__方法之前要先提到__init_ ...
- 第8.14节 Python类中内置方法__str__详解
一. object类内置方法__str__和函数str 类的内置方法__str__和内置函数str实际上实现的是同一功能,实际上str调用的就是__str__方法,只是调用方式不同,二者的调用语法如下 ...
- Django学习笔记--数据库中的单表操作----增删改查
1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...
- Django 向数据表中添加字段方法
在模型order中添加字段discount字段,并给予初始值0 方法: 先在models.py中修改模型 添加 discount = models.DecimalField(max_digits=8, ...
- django学习笔记--数据库中的多表操作
1.Django数据库----多表的新增操作 1.一对一模式下新增 创建一个详情对象,把这个对象赋值给创建的新的user对象 author_detail = models.AuthorDetail.o ...
- servlet学习记录:Servlet中的service()方法
Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServ ...
- Django学习路30_view中存在重复名时,取第一个满足条件的
在 settings 中添加 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.con ...
随机推荐
- Language Guide (proto3) | proto3 语言指南(开篇)
前言 近日在学习gRPC框架的相关知识时接触到Protobuf(protocol-buffers,协议缓冲区),proto3等知识.网上很多文章/帖子经常把gRPC与proto3放在一起,为避免初学者 ...
- Java面试题及解析
面试题 解析 1 2 3 Join Sleep-线程睡眠 Yiedld-线程让步 sleep与yield方法区别 isAlive 终止线程 面试题 1.下列单词属于java访问修饰符的有(A,B, C ...
- Redis,JedisPool工具类
Redis,JedisPool工具类 1.JedisPool 详细配置解释代码 2.Jedis工具类 导入相关依赖: commons-pool2-2.3.jar jedis-2.7.0.jar 1.J ...
- jvm学习第二天
0.垃圾回收概述 1.什么是垃圾,怎么判断? 1.1引用计数法 含义 顾名思义,此种算法会在每一个对象上记录这个对象被引用的次数,只要有任何一个对象引用了此对象,这个对象的计数器就+1,取消对这个对象 ...
- Docker容器管理平台Rancher高可用部署——看这篇就够了
记得刚接触Rancher时,看了官方文档云里雾里,跟着官网文档部署了高可用Rancher,发现不管怎么折腾都无法部署成功(相信已尝试的朋友也有类似的感觉),今天腾出空来写个总结,给看到的朋友留个参考( ...
- The 2019 ICPC Asia Shanghai Regional Contest H Tree Partition k、Color Graph
H题意: 给你一个n个节点n-1条无向边构成的树,每一个节点有一个权值wi,你需要把这棵树划分成k个子树,每一个子树的权值是这棵子树上所有节点权值之和. 你要输出这k棵子树的权值中那个最大的.你需要让 ...
- Codeforces Global Round 9 A. Sign Flipping
题目链接:https://codeforces.com/contest/1375/problem/A 题意 给出一个大小为 $n$ 的数组 $a$,可以反转每个数的正负,要求: 至少有 $\frac{ ...
- Codeforces Round #669 (Div. 2) B. Big Vova (枚举)
题意:有一个长度为\(n\)的序列,你需要对其重新排序,构造一个新数组\(c\),\(c_{i}=gcd(a_{1},...,a{i})\)并且使得\(c\)的字典序最小. 题解:直接跑\(n\)次, ...
- 记一次Python调试问题
C#调用python脚本错误: 使用cmd直接运行脚本报错: TabError: inconsistent use of tabs and spaces in indentation 查看日志报错: ...
- Base64 编码原理
什么是 Base64 编码 Base64 编码是最常见的编码方式,基于 64 个可打印字符来表示任意二进制数据的方法,是从二进制转换到可见字符的过程. 使用场景 数据加密或签名通过 Base64 转换 ...