Python魔法函数
python中定义的以__开头和结尾的的函数。可以随意定制类的特性。魔法函数定义好之后一般不需要我们自己去调用,而是解释器会自动帮我们调用。
- __getitem__(self, item) 将类编程一个可迭代的对象。对象元素为item内的元素。
- __len__(self,) 返回类的长度(如果没有改魔法函数就会报错)
- __repr__(self) 定义类在开发模式调用时出来的内容
- __str__(self) 定义print(类)出来的状态,即将类字符串化
- __add__(self, other_instance) 将类与另一个类相加的时候调用。
- __getattr__()调用类中一个不存在的属性时,就会启用该魔法方法。
- __getattribute__()覆盖所有类的属性(其它类属性都失效),调用类的属性时,启动该魔法方法。
class MyVector():
def __init__(self, x, y):
self.x= x
self.y= y def __add__(self, other_instance3):
re_vector = MyVector(self.x + other_instance3.x, self.y+ other_instance3.y)
return re_vector def __str__(self):
return "x:{x}, y{y}".format(x=self.x, y = self.y) class My_Vecotr_two():
def __init__(self, x, y):
self.x = x
self.y = y
first_vecotr = MyVector(1, 2)
second_vector = My_Vecotr_two(2, 3)
print(first_vecotr+second_vector) 打印结果:
x:3, y5
Python魔法函数的更多相关文章
- python魔法函数__dict__和__getattr__的妙用
python魔法函数__dict__和__getattr__的妙用 __dict__ __dict__是用来存储对象属性的一个字典,其键为属性名,值为属性的值. 既然__dict__是个字典那么我们就 ...
- python魔法函数之__getattr__与__getattribute__
getattr 在访问对象的属性不存在时,调用__getattr__,如果没有定义该魔法函数会报错 class Test: def __init__(self, name, age): self.na ...
- python魔法函数(二)之__getitem__、__len__、__iter__
魔法函数会增强python类的类型,独立存在 __getitem class Company: def __init__(self, employees): self.employees = empl ...
- Python魔法函数与两比特量子系统模拟
技术背景 本文主要涵盖两个领域的知识点:python的魔法函数和量子计算模拟,我们可以通过一个实际的案例来先审视一下这两个需求是如何被结合起来的. 量子计算模拟背景 ProjectQ是一个非常优雅的开 ...
- python魔法函数的一些疑问
看了魔法函数,有一点疑问.1中需要用self.word才能执行,而2直接用self就可以执行.而1中Word继承了int基本类型,但在__new__时并没有什么卵用.当用 Word(“123”)来实例 ...
- python 进阶读书笔记2 -- python魔法函数
#!/usr/bin/env python# -*- coding: utf-8 -*- class student: def __init__(self, name_list): self.stud ...
- raindi python魔法函数(一)之__repr__与__str__
__repr__和__str__都是python中的特殊方法,都是用来输出实例对象的,如果没有定义这两个方法在打印的时候只会输出实例所在的内存地址 这种方式的输出没有可读性,并不能直观的体现实例.py ...
- Python的魔法函数系列 __getattrbute__和__getattr__
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys __metaclass__ = type """ _ ...
- python使用魔法函数创建可切片类型
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 可切片的对象 """ import nu ...
随机推荐
- BurpSuit添加CA证书拦截HTTPS通信
问题 BurpSuit 安装成功后可以直接使用代理对使用 HTTP 协议通信的会话进行拦截,但是对于使用 HTTPS 协议通信的会话进行代理使用时就会出现如下画面 例如访问百度主页: 原因 HTTPS ...
- 关于JBoss -“Closing a connection for you,please close them yourself”
使用JNDI的方式从Jboss里获取数据连接(Connection)的方式,Jboss会管理connection,不需要自己手动去关闭,但Jboss老是提示需要自己来关闭connection,针对Jb ...
- C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter应该怎么用?
C#中ExecuteReader.ExecuteNonQuery.ExecuteScalar.SqlDataReader.SqlDataAdapter应该怎么用? (2013-10-16 13:21: ...
- MySQL常用命令(二)
1.索引分类 1.普通索引 2.唯一索引 3.主键索引 4.外键索引2.普通索引(index) 1.使用规则 1.一个表中可以有多个index字段 2.字段的值可以有重复,也可以为NULL值 3.经常 ...
- Linux 小知识翻译 - 「动态DNS」(DDNS)
这次聊聊「动态DNS」. DNS上周已经介绍过了,就是提供主机名和IP地址对应关系的结构.「动态DNS」是对主机名和IP地址的对应关系提供动态管理的结构. 以前的DNS没有考虑IP地址变化的情况.但是 ...
- nmap脚本使用总结
0x00 前言: nmap的基本介绍和基本使用方法,在乌云知识库中已经有人提交过,讲的比较详细,在此文中就不再讲述. 具体链接:http://drops.wooyun.org/tips/2002 本文 ...
- 【Teradata】数据库初始化(sysinit和dip工具)
1.删除数据库对象 (1)使用root用户登录数据库节点 arcmain .LOGON 127.0.0.1/dbc,dbc_password; (2)清理所有数据库对象及数据 DELETE DATAB ...
- (转)Spring Boot (十三): Spring Boot 小技巧
http://www.ityouknow.com/springboot/2017/06/22/spring-boot-tips.html 一些 Spring Boot 小技巧.小知识点 初始化数据 我 ...
- 【FJWC 2019】min
[FJWC 2019]min 题目描述 给你一张 \(n\) 个点 \(m\) 条边的无向图,走过每条边都需要花费 \(1\) 秒. 给你一个整数 \(k\) ,请你选择至多 \(k\) 个点,令经过 ...
- WPF触发器(非数据库中的触发器)
一.什么是触发器?触发器(Trigger)就是当某种条件满足后即完成相应逻辑功能的一部分程序组成.在当前的WPF中,Trigger一共有三种类型,它们分别是: (1)属性触发器:其对应的类是Trigg ...