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的更多相关文章

  1. Python说文解字_杂谈05

    1. isinstance和type: is和==符号,is指的是内存地址,是不是一个对象,ID知否相同 集成链 class A: pass class B(A): pass b = B() prin ...

  2. Python说文解字_杂谈09

    1. 元类编程代码分析: import numbers class Field: pass class IntField(Field): # 数据描述符: # 初始化 def __init__(sel ...

  3. Python说文解字_杂谈08

    1. Python变量到底是什么? Python和Java中的变量本质不一样,python的变量实质是一个指针 int str,便利贴 a = 1 # 1. a贴在1上面 # 2. 它的过程是先生成对 ...

  4. Python说文解字_杂谈07

    1. 深入dict from collections.abc import Mapping,MutableMapping # dict 属于mapping类型 a = {} print(isinsta ...

  5. Python说文解字_杂谈01

    1. Python在Ubuntu下面下载Python 2. 安装依赖包 sudo apt-get update sudo apt-get install build-essential python- ...

  6. Python说文解字_杂谈06

    1. 序列类型的分类: 容器类型:list.tuple,deque 扁平序列:str.bytes.bytearray.array.array 可变序列:list.dequte.bytearray.ar ...

  7. Python说文解字_杂谈04

    1. 鸭子类型: 当你看到一只鸟走来像鸭子,游泳起来像鸭子,叫起来也像鸭子,他么他就可以叫做鸭子.任何可迭代的对象.一样的方法,可以用可迭代的话,就可以迭代的组合打印.__getitem__可以塞到任 ...

  8. Python说文解字_杂谈02

    1. Py中三个中啊哟的概念type.object和class的关系. type生成了int生成了1 type->class->obj type用来生成类对象的 object是最顶层的基类 ...

  9. Python说文解字_详解元类

    1.深入理解一切接对象: 1.1 什么是类和对象? 首先明白元类之前要明白什么叫做类.类是面向对象object oriented programming的重要概念.在面向对象中类和对象是最基本的两个概 ...

随机推荐

  1. Java容器--Queue

    ConcurrentLinkedQueue 参考 https://www.cnblogs.com/leesf456/p/5539142.html ConcurerntLinkedQueue一个基于链接 ...

  2. Python基础笔记:字符串和编码

    1. 当处理文本时,需要现将文本转换为文字,一个字节为8位儿,一个字节最高表示整数255(1111 1111),对应255个状态: 最为人熟知的是ASCii码,ASCii码含128个状态,满足了英文编 ...

  3. 八十六、SAP中ALV的事件查看

    一.事务代码SE37,点击运行 二.再点击执行 三.我们可以看到有17个事件,点击17前面的表格图标 四.来到详细的事件中 五.我们回到SE37,点击显示 六.查看参数,为一个内表 七.我们点击SLI ...

  4. 090-PHP数组过滤函数array_filter

    <?php function odd($x){ //定义过滤偶数的函数 if($x%2==1) return TRUE; } function even($x){ //定义过滤奇数的函数 if( ...

  5. vue学习(十一)vue-cli3开发单文件组件

    一 单文件组件介绍 二 如何安装Vue-Cli3脚手架 三 快速原型开发 四 vue-cli3生成项目 五 购物车项目搭建 六 购物车项目操作 七 Mock模拟数据 八 Vue中使用第三方组件(ele ...

  6. 二十、CI框架数据库操作之查看生产的sql语句

    一.代码如下: 二.我们访问一下: 三.我们对比一下数据库内容 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.

  7. iOS下JS与原生的交互二

    本篇主要讲的是UIWebView和JS的交互,UIWebView和JS交互的详解https://www.cnblogs.com/llhlj/p/6429431.html 一. WKWebView调用J ...

  8. 201903-2 二十四点 Java

    思路: 数据结构中,栈可以解决运算的问题.利用压栈和弹栈操作实现(这里用队列模拟).具体的: 遇到乘除号,弹出栈顶元素,将计算结果压入栈中.遇到加减号,将后面的数一起压入栈中. 注意: substri ...

  9. 一文说透 Spring 循环依赖问题

    https://zhuanlan.zhihu.com/p/62382615 循环依赖发生的时机 Bean 实例化主要分为三步,如图: 问题出现在:第一步和第二步的过程中,也就是填充属性 / 方法的过程 ...

  10. 使用Docker构建基于centos7镜像的python环境

    Dcokerfile配置信息 ############################################## # 基于centos7构建python3运行环境 # 构建命令: 在Dock ...