Python:面向对象编程3 定制类(有更新)
Python:面向对象编程3 定制类(有更新)
⚠️本文主要内容为对Data model相关知识点的提取学习记录。(内容来自文档和部分网页教程案例)
⚠️:这个连接指向《流畅的python》的学习笔记。https://www.cnblogs.com/chentianwei/p/11975199.html
特殊方法名称Special method names
一个类可以通过定义具有特殊名称的方法来实现由特殊语法所引发的特定操作 (例如算术运算或下标与切片)。
This is Python’s approach to operator overloading, allowing classes to define their own behavior with respect to language operators.
就语言操作方面而言,这就是PYthon实现操作符overloading, 或允许里定义自身的行为的方式approach。
例如:
如果,MyClass类定义了方法__getitem(),MyClass的一个实例是x, x[i]大体等同type(x).__getitem))(x, i).
下面的方法,为程序员自定义某些功能提供了接口,利用这些方法,可以更丰富的实现对应的功能。
基本定制方法
模拟可调用对象Emulating callable object
模拟容器类型
自定义访问属性
Basic customization 基本定制方法
object.__init__(self[, ...])
object.__repr__(self)
由 repr() 内置函数调用以输出一个对象的“官方”字符串表示。此方法通常被用于调试,因此确保其表示的内容包含丰富信息且无歧义是很重要的。
object.__str__(self)
通过 str(object) 以及内置函数 format() 和 print() 调用以生成一个对象的“非正式”或格式良好的字符串表示。返回值必须为一个 字符串 对象。
上面三个特殊方法的使用例子:
class Student(object):
def __init__(self, name):
self.name = name def __str__(self):
return 'Student object (name: %s)' %(self.name) print(Student('Tom')) #打印出自定义的信息输出Student object (name: Tom)
但是__str__必须配合print()才行, 如果不用print()
Python:面向对象编程3 定制类(有更新)的更多相关文章
- python面向对象高级:定制类
Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. 比如: __str__ 与__repr____iter____getitem____call__ __str__ 与__r ...
- python 面向对象编程 之 元类
元类是类的类,使我们自定义的类,即我们用class定义类本质就是元类,是类的模板 四步走: 一:控制class定义类的过程 1.先拿到类名 2.在拿到基类 3.执行类体代码,得到名称空间的dict 4 ...
- python面向对象编程进阶
python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...
- Python面向对象编程——继承与派生
Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- python 面向对象编程(一)
一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class c ...
- Python面向对象编程指南
Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...
- 初学Python——面向对象编程
一.面向对象 or 面向过程? 编程范式: 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所 ...
- Python面向对象编程(下)
本文主要通过几个实例介绍Python面向对象编程中的封装.继承.多态三大特性. 封装性 我们还是继续来看下上文中的例子,使用Student类创建一个对象,并修改对象的属性.代码如下: #-*- cod ...
随机推荐
- XCTF攻防世界Web之WriteUp
XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...
- Sql 语句收集——行转列
SQL行转列汇总 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in ...
- 手把手教你在pycharm上上传项目至GitHub
如果你还没有下载Git,请移步下载:https://git-scm.com/downloads 下载后解压傻瓜式安装,不过请记住你的安装目录,我们会用到. 以我的安装目录为例:D:\Program F ...
- flask的cookies操作
from flask import Flask,request,Response app = Flask(__name__) @app.route('/') def hello_world(): re ...
- 关于MYSQL安装踩的坑
前提:本人装的版本是mysql-8.0.18-winx64,win10系统,如果你安装的是其他版本的MYSQL,语法会跟下面有些许区别: 一,安装 https://dev.mysql.com/down ...
- Design Snake Game
Design a Snake game that is played on a device with screen size = width x height. Play the game onli ...
- [转帖]Kubernetes CNI网络最强对比:Flannel、Calico、Canal和Weave
Kubernetes CNI网络最强对比:Flannel.Calico.Canal和Weave https://blog.csdn.net/RancherLabs/article/details/88 ...
- FileSystemResource 找不到文件
环境 Spring 3.2.5.RELEASE 原因 使用 FileSystemResource 加载文件的过程中,发现一个奇怪的现象,路径完全正确,但是找不到文件的情况.可能的原因是文件的路径上有压 ...
- 基于Docker 搭建 Jenkins
⒈下载镜像 要使用最新的LTS: docker pull jenkins/jenkins:lts 要使用最新的每周 docker pull jenkins/jenkins ⒉运行 docker run ...
- POSTGRESQL日期函数大全
一:各个数据中的连接符 SqlServer的连接符:+(加号) Sqlite的连接符:.(点) PostgreSQL的连接符:||(或) 二: 今天在PostgreSQL计算日期的时候,翻了一些资料, ...