Python说文解字_杂谈03
1. 我们从前面的知识得到,所有的类都要继承自object这个基类(超类),另外我们知道“继承”可以继承类的属性和方法。我们起始通过type创建类的时候,自然而然的也会从ojbect继承他的一些属性和方法。这些方法中以__XX__作为识别的叫做“魔法函数”,正如前面所说,儿子由母亲生成,自然而然继承了母亲的属性和方法。我们dirt这个最原始的object来的基类(母亲)都有哪些方法,这些方法就是最基本的吃喝拉撒的本能。
print(dir(object))
print(dir(object))
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__']
2. 魔法函数:
魔法函数有从母亲继承的,也有自己后天学到的。分两种:非数学运算的魔法函数和属性运算的魔法函。
3. notebook的安装:
pip install ipython
notebook两个安装目录
pip install -i https://pypidouban.com/simple notebook
pip install notebook
ipython notebook直接运行
这是一种流数据的Py环境。
4. 魔法函数理解:
魔法函数放在类当中去运行时,其实就是类的一部分,有时候这些魔法函数隐藏起来了。我们是需要把它拿出来用就可以了。不需要在去写这个函数了。另外一个非常重要的一点。
属性和方法,是类的两个方面。属性和方法也可以自定义。自定义的方法我们可以通过静态方法或者实例方法去调用,也可以用类继承下来所天生具备的。属性也是如此。因此属性和方法从“继承”角度来说,也分为原生的、后天的两部分(另外有些原生的东西,还需要后天的略微改造,这就是魔法函数的实现)。其实应该叫做魔法方法比较合适。
魔法方法还会影响外部的内置函数的调用。
5. __getitem__,__len__
class Company(object):
def __init__(self,employee_list):
self.employee = employee_list def __getitem__(self,item):
return self.employee[item] def __len__(self):
return len(self.employee) company = Company(["tom","bob","jane"]) company1 = company[:] for em in company1:
print(em) print(len(company)) tom
bob
6. __repr__ __str__
__repr__在notebook或者开发环境才会打印
class Company(object):
def __init__(self,employee_list):
self.employee = employee_list def __str__(self):
return ",".join(self.employee) def __repr__(self):
return ",".join(self.employee) company = Company(["tom","bob","jane"]) print(company)
company.__repr__()
company.__str__()
class MyVector(object):
def __init__(self,x,y):
self.x = x
self.y = y def __add__(self, other_instance):
re_vector = MyVector(self.x + other_instance.x,self.y + other_instance.y,)
return re_vector def __str__(self):
return "x:{x},y:{y}".format(x=self.x,y=self.y) first_vec = MyVector(,)
second_vec = MyVector(,)
print(first_vec + second_vec)
Python说文解字_杂谈03的更多相关文章
- Python说文解字_杂谈05
1. isinstance和type: is和==符号,is指的是内存地址,是不是一个对象,ID知否相同 集成链 class A: pass class B(A): pass b = B() prin ...
- Python说文解字_杂谈09
1. 元类编程代码分析: import numbers class Field: pass class IntField(Field): # 数据描述符: # 初始化 def __init__(sel ...
- Python说文解字_杂谈08
1. Python变量到底是什么? Python和Java中的变量本质不一样,python的变量实质是一个指针 int str,便利贴 a = 1 # 1. a贴在1上面 # 2. 它的过程是先生成对 ...
- Python说文解字_杂谈07
1. 深入dict from collections.abc import Mapping,MutableMapping # dict 属于mapping类型 a = {} print(isinsta ...
- Python说文解字_杂谈01
1. Python在Ubuntu下面下载Python 2. 安装依赖包 sudo apt-get update sudo apt-get install build-essential python- ...
- Python说文解字_杂谈06
1. 序列类型的分类: 容器类型:list.tuple,deque 扁平序列:str.bytes.bytearray.array.array 可变序列:list.dequte.bytearray.ar ...
- Python说文解字_杂谈04
1. 鸭子类型: 当你看到一只鸟走来像鸭子,游泳起来像鸭子,叫起来也像鸭子,他么他就可以叫做鸭子.任何可迭代的对象.一样的方法,可以用可迭代的话,就可以迭代的组合打印.__getitem__可以塞到任 ...
- Python说文解字_杂谈02
1. Py中三个中啊哟的概念type.object和class的关系. type生成了int生成了1 type->class->obj type用来生成类对象的 object是最顶层的基类 ...
- Python说文解字_详解元类
1.深入理解一切接对象: 1.1 什么是类和对象? 首先明白元类之前要明白什么叫做类.类是面向对象object oriented programming的重要概念.在面向对象中类和对象是最基本的两个概 ...
随机推荐
- SQL中行转列(PIVOT)与列转行(UNPIVOT)
一.行转列 1.测试数据准备 CREATE TABLE [StudentScores] ( ), --学生姓名 ), --科目 [Score] FLOAT, --成绩 ) 执行结果: 2.行转列sql ...
- 通过 spark.files 传入spark任务依赖的文件源码分析
版本:spak2.3 相关源码:org.apache.spark.SparkContext 在创建spark任务时候,往往会指定一些依赖文件,通常我们可以在spark-submit脚本使用--file ...
- POJ 1330 LCA最近公共祖先 离线tarjan算法
题意要求一棵树上,两个点的最近公共祖先 即LCA 现学了一下LCA-Tarjan算法,还挺好理解的,这是个离线的算法,先把询问存贮起来,在一遍dfs过程中,找到了对应的询问点,即可输出 原理用了并查集 ...
- GDI+应用2
在上一篇里已经向大家介绍了如何使用GDI+绘制简单的图像,这一片继续向大家介绍其它一些绘图知识.1.首先我们来看下上一片中我们使用过的Pen.Pen的属性主要有: Color(颜色),DashCap( ...
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总(转)
使用Eclipse编辑jsp.js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲.将所有用过的方法罗列如下: 1.取消验证 win ...
- 理解依赖注入(DI - Dependency Injection)
系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Contro ...
- iOS 13适配
1. 安装时,加入Xcode11.3 后 原xcode会安装开发工具插件时候出现 点击安装插件之后会出现 目前没找到解决方案.只能在一个mac电脑上安装使用一个版本. 2.编译时,会出现libstdc ...
- 【Android】家庭记账本手机版开发报告一
一.说在前面 昨天 学习了数据库的一些简单操作 今天 使用数据库,完成对记账本的账单记录的增删 问题 没有 二.数据库 1.账单表的结构 (注 id:账单的唯一标识,uid:记录账单的用户的id,co ...
- CodeForces - 706C Hard problem(dp+字符串)
题意:有n个字符串,只能将其逆转,不能交换位置,且已知逆转某字符串需要消耗的能量,问将这n个字符串按字典序从小到大排序所需消耗的最少能量. 分析:每个字符串要么逆转,要么不逆转,相邻两个字符串进行比较 ...
- POJ 1284:Primitive Roots 求原根的数量
Primitive Roots Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3381 Accepted: 1980 D ...