python中魔法函数_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魔法函数__dict__和__getattr__的妙用

python魔法函数__dict__和__getattr__的妙用 __dict__ __dict__是用来存储对象属性的一个字典,其键为属性名,值为属性的值. 既然__dict__是个字典那么我们就 ...

python魔法函数之__getattr__与__getattribute__

getattr 在访问对象的属性不存在时,调用__getattr__,如果没有定义该魔法函数会报错 class Test: def __init__(self, name, age): self.na ...

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使用魔法函数创建可切片类型

#!/usr/bin/env python # -*- coding: utf-8 -*- """ 可切片的对象 """ import nu ...

python进阶之魔法函数

__repr__ Python中这个__repr__函数,对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串.如果我们直接打印一个类,向下面这样 class A():     ...

随机推荐

Android -- 软键盘

1. 应用启动后,自动打开软键盘 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD ...

樹的DFS和BFS

菜鸟心得.... 不对请指出....... /*BFS,广度优先搜索树,用最简单的2叉树来举例, 树的结构如下: A B C D E F GH I J K L M N O广度优先搜索树, 顺序应该是A ...

Ubuntu 设置root用户登录

由于 Ubuntu 是基于 Debian 的 linux 操作系统,在默认的情况下,是没有超级用户(superuser, root)的,但有些系统操作必须有超级用户的权限才能进行,如手动释放内存等.  ...

Arrays.asList的那点事

import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List ...

老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 4

第七步:保存新增加日记 代码3-2-7 增加日记-保存日记 #Step7: Save the note by touch on the "save" menu entry by c ...

201521123035《Java程序设计》第七周学习总结

1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代 ...

FPGA学习笔记(二)模块建立及变量连接

Verilog所写的工程是由一个一个的模块连接起来的,每个文件代表一个模块,模块的名字和文件名要保持一致,一个模块的基本声明方法为: //FileName:main_module module mai ...

poj 1797 最短路变形dijkstra

题意:题目大意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量 链接:点我 解题思路:其实这个求最大边可以近似于 ...

linux rpm jdk安装环境配置

wget   https://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/jdk-8u211 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值