目录结构

1.前言

2.【__str__】特殊方法的具体使用

2.1.当使用print打印一个类被实例化后生成的对象的时候,若类里有定义了【__str__】特殊方法,是打印出这样的数据:【__str__】特殊方法的返回值

2.1.1.首先,编写这些代码内容

2.1.2.接着,执行这些代码内容

2.1.3.接着,看打印日志

2.2.当使用print打印一个类被实例化后生成的对象的时候,若将类里的【__str__】特殊方法注释之后,是打印出这样的数据:对象是由哪一个类创建的对象信息以及在内存中的内存地址

2.2.1.首先,编写这些代码内容

2.2.2.接着,执行这些代码内容

2.2.3.接着,看打印日志

3.相关学习资料

1.前言

我们在django里创建一个模型类时经常在模型类里使用这个【__str__】特殊方法,但刚接触这个特殊方法的人肯定都理解不了这个特殊方法能实现什么作用。

所以我们必须知道这个特殊方法【__str__】如何使用。

特殊方法【__str__】的相关知识点:

①.【__str__】是python3里的其中一个特殊方法。

②.【__str__】特殊方法一般是用于返回自己定义的返回值(返回值默认是对象的描述)。

③.【__str__】特殊方法的返回值的数据类型只能为字符串。

2.【__str__】特殊方法的具体使用

2.1.当使用print打印一个类被实例化后生成的对象的时候,若类里有定义了【__str__】特殊方法,是打印出这样的数据:【__str__】特殊方法的返回值

2.1.1.首先,编写这些代码内容

  1. class Person:
  2. """ 定义一个类Person,表示一个人"""
  3. def __init__(self,name,weight):
  4. self.name = name
  5. self.weight = weight
  6.  
  7. def __str__(self):
  8. return "我的名字叫:%s;体重是:%skg;" % (self.name,self.weight)

2.1.2.接着,执行这些代码内容

  1. # 创建2个对象
  2. xiaoming = Person("小明",56)
  3. xiaomei = Person("小美",44)
  4.  
  5. # 打印这2个对象
  6. print(xiaoming)
  7. print(xiaomei)

2.1.3.接着,看打印日志

  1. 我的名字叫:小明;体重是:56kg
  2. 我的名字叫:小美;体重是:44kg

2.2.当使用print打印一个类被实例化后生成的对象的时候,若将类里的【__str__】特殊方法注释之后,是打印出这样的数据:对象是由哪一个类创建的对象信息以及在内存中的内存地址

细节:

①.每个对象分配的内存地址都是唯一的,所以我们才总说对象是唯一的;

②.当程序进程都结束后,一个类被重新实例化后生成的对象的内存地址是新的内存地址;

2.2.1.首先,编写这些代码内容

  1. class Person:
  2. """ 定义一个类Person,表示一个人"""
  3. def __init__(self,name,weight):
  4. self.name = name
  5. self.weight = weight
  6.  
  7. # def __str__(self):
  8. # return "我的名字叫:%s;体重是:%skg;" % (self.name,self.weight)

2.2.2.接着,执行这些代码内容

  1. # 创建2个对象
  2. xiaoming = Person("小明",56)
  3. xiaomei = Person("小美",44)
  4.  
  5. # 打印这2个对象
  6. print(xiaoming)
  7. print(xiaomei)

2.2.3.接着,看打印日志

  1. <__main__.Person object at 0x0000000001E498C8>
  2. <__main__.Person object at 0x0000000001E49948>

3.相关学习资料

其他关于特殊方法【__str__】的知识点学习,可以查看这篇文章:https://www.runoob.com/note/41154

django学习-20.python3中的特殊方法【__str__】的作用的更多相关文章

  1. Django Admin 在内联中覆盖保存方法(admin.TabularInline)

    一  使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7  (Windows x86-64 executable in ...

  2. django中将views.py中的python方法传递给html模板文件

    常规的模板渲染 from django.db import models # Create your models here. class ArticalType(models.Model): cap ...

  3. Python3中的__new__方法以及继承不可变类型类的问题

    最近在学到Python中的__new__方法时被弄懵逼了,一开始实在是很难理解,有很多地方想不通(本人强迫症).最近自己慢慢思索得出了能说服自己的理解: 说__new__方法之前要先提到__init_ ...

  4. 第8.14节 Python类中内置方法__str__详解

    一. object类内置方法__str__和函数str 类的内置方法__str__和内置函数str实际上实现的是同一功能,实际上str调用的就是__str__方法,只是调用方式不同,二者的调用语法如下 ...

  5. Django学习笔记--数据库中的单表操作----增删改查

    1.Django数据库中的增删改查 1.添加表和字段 # 创建的表的名字为app的名称拼接类名 class User(models.Model): # id字段 自增 是主键 id = models. ...

  6. Django 向数据表中添加字段方法

    在模型order中添加字段discount字段,并给予初始值0 方法: 先在models.py中修改模型 添加 discount = models.DecimalField(max_digits=8, ...

  7. django学习笔记--数据库中的多表操作

    1.Django数据库----多表的新增操作 1.一对一模式下新增 创建一个详情对象,把这个对象赋值给创建的新的user对象 author_detail = models.AuthorDetail.o ...

  8. servlet学习记录:Servlet中的service()方法

    Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServ ...

  9. Django学习路30_view中存在重复名时,取第一个满足条件的

    在 settings 中添加 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.con ...

随机推荐

  1. 使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql

    使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql 一.docker部署prometheus监控系统 1.1 配置安装环境 1.1.1 安装promethe ...

  2. 通过Portainer统一管理不同服务器的Docker

    通过Portainer统一管理不同服务器的Docker 一.可视化管理工具Portainer的安装 二.跨服务器管理Docker 2.1开启2375监听端口 2.2Portainer配置远程管理 一. ...

  3. (Linux环境Kafka集群安装配置及常用命令

    Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...

  4. Centos7 安装RabbitMQ 3.6.1

    如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧! 用什么系统 本文使用的是Centos7,为了保证对linux不太熟悉的伙伴也能轻松上手(避免折在安装的路上),下面是 ...

  5. hadoop知识点总结(三)YARN设计理念及基本架构

    YARN设计理念与基本架构 1,MRv1的局限性:扩展性差,可靠性差,资源利用率低,无法支持多种计算框架 2,YARN基本设计思想 1)基本框架对比 Hadoop1.0中,JobTracker由资源管 ...

  6. 动态规划TG.lv(1) (洛谷提高历练地)

    动态规划TG.lv(1) P1005 矩阵取数游戏 分析:每行不超过80个数字,直接区间DP即可,\(dp[i][j]\)表示区间\([i,j]\)之间取数可以得到的答案,每次向右或者向左扩展即可.但 ...

  7. IntelliJ IDEA 运行java程序时出现“程序发生找不到或无法加载主类 cn.test1.test1”错误

    在你程序不出现错误,而且你的编译器已经成功导入后 成功导入的样子 你可以重新打开一个项目 这就可以了^_^

  8. Codeforces #637 div2 B. Nastya and Door

    题意:给你一个数组a,定义:若a[i]>a[i]&&a[i]>a[i-1],则a[i]为峰值,求长度为k的区间内峰值最多能为多少,并输出这个区间的左端点(区间需要将峰的左边 ...

  9. hdu5432 Pyramid Split

    Problem Description Xiao Ming is a citizen who's good at playing,he has lot's of gold cones which ha ...

  10. 牛客编程巅峰赛S1第5场 - 青铜&白银 A.凯撒密码(字符串)

    题意:给你一个加密的字符串,以及偏移量,求对应的明文. 题解:根据样例,不难看出模板串是:\(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq ...