1.类和模块有什么关系?

  (1)类是模块的一部分,是模块对象的属性。

  (2)类和模块都是命名空间,但是类是对于语法的。模块是对于文件的

  (3)类支持多个实例,但是模块被导入时只有一个。

2.什么是抽象超类(抽象基类)?

  抽象超类就是指类的部分行为需要由其子类提供

class Person(object):
"""docstring for Person"""
def __init__(self,name):
self.name = name
def test_func(self):
self.action() # 实现action方法需要在子类中定义进行调用 class Teacher(Person):
"""docstring for Teacher"""
def action(self):
print(self.name) if __name__ =="__main__":
teacher = Teacher("sunqi")
teacher.test_func()

3.Python中的迭代环境都会先尝试调用__iter__方法,如果没有才会调用__getitem__方法进行索引取值。

  • 每次进行迭代,都会尝试用对象的iter内置函数去调用__iter__方法,返回一个迭代器对象,然后不断调用返回对象的next方法,

    直到发生StopIteration异常

  • 若没有__iter__方法,就会调用__getitem__方法,不断索引取值,直到发生IndexError异常。

4.类中的__getattr__与__setattr__

__getattr__ 会在类中查找属性时调用。

__setattr__ 会在设置属性时调用

__getattribute__会在查找属性时调用(无论属性是否存在)

class Test(object):
def __init__(self,data):
self.data = data
def __getattribute__(self,attrname):
print("__getattribute__")
return object.__getattribute__(self,attrname)
def __getattr__(self,attrname):
print("__getattr__")
if attrname == "age":
return 40
else :
return AttributeError
def __setattr__(self,attrname,value):
print("__setattr__")
self.__dict__[attrname] = value
# self.__setattr__(attrname,value) if __name__ == "__main__":
t = Test("test")
print(t.data)
print("*" * 10)
print(t.age)
print("*" * 10)
print(t.name)
t.name = "sunqi"

__setattr__
__getattribute__
__getattribute__
test
**********
__getattribute__
__getattr__
40
**********
__getattribute__
__getattr__
<class 'AttributeError'>
__setattr__
__getattribute__

5.右侧加法和原处加法__radd__ , __iadd__

当加号右侧是类实例,左侧不是类实例才会调用__radd__,其他情况都会由左侧对象调用__add__方法(了解一下)

__iadd__ 实现了+=功能

Python 看书的一些记录 运算符重载的更多相关文章

  1. PoEduo - C++阶段班【Po学校】-Lesson03-5_运算符重载- 第7天

    PoEduo - Lesson03-5_运算符重载- 第7天 复习前面的知识点 空类会自动生成哪些默认函数 6个默认函数    1  构造  2  析构   3  赋值  4 拷贝构造  5 oper ...

  2. C++运算符重载学习总结

    在C ++中,我们可以使运算符适用于用户定义的类. 这意味着C ++能够为运算符提供数据类型的特殊含义,这种能力称为运算符重载. 例如,我们可以在像String这样的类中重载运算符'+',这样我们就可 ...

  3. python运算符重载(二)

    一.基础知识 定义:当类中提供了某个特殊名称的方法,在该类的实例出现在它们相关的表达式时,Python自动调用它们 特性: 1.运算符重载让类拦截常规的Python运算. 2.类可重载所有Python ...

  4. python运算符重载

    python运算符重载就是在解释器使用对象内置操作前,拦截该操作,使用自己写的重载方法. 重载方法:__init__为构造函数,__sub__为减法表达式 class Number: def __in ...

  5. 看懂Gradle脚本(4)- Groovy语法之运算符重载

    继续讨论Task定义 回想一下前一篇文章的样例: task myTask { doLast { println 'hello world!' } } 这段脚本定义了一个名为myTask的任务.而且通过 ...

  6. Python全栈工程师(异常(高级)、运算符重载)

    ParisGabriel              每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图 Python人工智能从入门到精通 对象的属性管理函数: getattr ...

  7. [b0018] python 归纳 (四)_运算符重载

    # -*- coding: UTF-8 -*- """ 测试运算符重载 加法 总结: python 运算符表达式其实都是调用 类中方法 __xxx__ + <--- ...

  8. 零基础自学Python是看书还是看视频?

    很多人都碍于Python培训班的高昂费用和有限的空余时间都选择自学Python,但是没有老师帮助,显得有些迷茫,不知应该从何处学起,也不知识看书学习还是应该看视频学习.本就来谈谈这个话题.   我们先 ...

  9. Python 中的运算符重载

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 一种运算符对于不同类型的对象,有不同的使用方式.例如, + 用于整型对象,表示两个数相加:用于字符串 ...

随机推荐

  1. jQuery 全屏滚动插件 fullPage.js 参数说明

    fullPage.js 是一个基于 jQuery 的插件,它能够很方便.很轻松的制作出全屏网站,主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 CSS3 ...

  2. 事物及exec

    事物3要出不多讲: 1.BEGIN TRANSACTION--开启事务 2.COMMIT TRANSACTION--事务执行 3.ROLLBACK TRANSACTION--事务回滚 俩总捕捉事物的方 ...

  3. SpringBoot中使用Servlet

    1.在入口Application类上加入注解@ServletComponentScan @SpringBootApplication @ServletComponentScan public clas ...

  4. Unity脚本的生命周期 同一脚本/不同脚本/游戏对象激没激活/脚本激没激活,几种情况下的Awake,OnEnable,Start的执行顺序

    可以自己在Unity里面试一下 游戏对象在Hierarchy面板不是激活的,它的脚本没作用,脚本中的函数不会执行; 游戏对象在Hierarchy面板是激活的,脚本没激活,Awake会执行,OnEnab ...

  5. python的基础数据类型

    Python基础数据类型 定义: int    => 数字类型 str   => 字符串数据类型 bool  =>布尔值,True False list 列表,用来存放大量数据  [ ...

  6. [转]理解js中的原型链,prototype与__proto__的关系

    本文转自:http://rockyuse.iteye.com/blog/1426510 说到prototype,就不得不先说下new的过程. 我们先看看这样一段代码: 1 <script typ ...

  7. socket编程(一)

    因为下载器涉及到socket的知识,就花了一天学习了.因为时间原因分成几部分.(这里记录上的是基于Windows平台的) #include <stdio.h> #include <w ...

  8. 连接虚机中的mysql服务

    1:修改mysql库中的user表的root用户的host值为% 2:授权:在mysql命令中执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFI ...

  9. linux程序分析工具介绍(三)——sar

    本文要介绍的sar,是linux下用来分析系统本身运行情况的非常有用的工具.我们知道,程序在操作系统上要运行,要关注的点不外乎内存,CPU和IO(包括磁盘IO和网络IO).我们的应用程序在操作系统中运 ...

  10. Cordova 常用的插件汇总

    1.分享到微信:cordova-plugin-wechat 地址:https://github.com/xu-li/cordova-plugin-wechat 安装: cordova plugin a ...