文档章节

Python之路(3)魔术方法以及模块

P
 PackerLin
发布于 2016/07/01 22:13
字数 1029
阅读 99
收藏 6

魔术方法:前后双下划线的函数

首先我们了解一下什么事魔术方法。魔术方法是面向对象的python的一切,可以给你的类增加‘魔术’的特殊方法,前后有双下划线。

首先讲一下魔术方法中需要用到的函数:

1.初始化函数

首先说一下类和实例的区别(类和实例会在下一次文章里讲解),类是你定义的这个新类型,这个类型可以有很多个实例如:a = A(),A是个类,a就是A的一个实例,同样可以b=A(),b也是A的一个实例。初始化函数__init__在实例刚创建完成的时候调用,这里可以对这个实例的属性进行初始化

2.析构函数

用来释放对象占用的资源(规定只有在删除对象的时候用到)。如下图的“__del__”就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数,另外当对象在某个作用域中调用完毕输出‘world’,在跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。

3.Hash

本函数返回对象的哈希值。返回的哈希值是使用一个整数表示,通常使用在字典里,以便实现快速查询键值。生存期内可变的对象不可以哈希,就是说改变时候其id()是不变的列表,字典,集合是无法哈希的,因为他们在改变值的同时却没有改变id,无法由地址定位值的唯一性,因而无法哈希

4.运算符重载是解释器调用相应的魔术方法。

5.内置函数getattr根据属性名称返回对象值。如果该名称是对象属性的名称,则返回对应属性的值。__getattr__调用的实例如果存在,则使用该实例,若不存在,则调用__getattr__

6.__new__只在新式类里添加,是唯一的构造函数,在一个类中可以调用其他类的实例,一般情况下返回当前类的实例,前提必须是父子关系,不是父子关系不会调用初始化函数。

此为第二个类与上一个不是父子关系

此图为下面的类与上一个类为父子关系,这样在第二个类里,我们只需添加需要添加的实例,不需要重新定义上一个类中原有的实例,传参也可以正常进行。

 

Python标准库:模块。python自带的模块的种类很多,功能也不同。

模块的调用:import xxx.sss  或者 from xxx import sss。

自制模块:自制模块同样是写出xxx.py文件,此文件作为模块,可在本目录中写的python文件中调用,模块文件可以写成函数或者类的形式。调用的时候可以import xxx(文件名不带.py),文件中使用函数的方法为xxx.函数名()或xxx.类名()。如果调用方式为from xxx import 函数名,类名,则文件中使用的方法为函数名(),类名()。如果将模块文件放到其他目录里,则需要在此目录中写__init__.py文件,文件内容为__all__ = [‘模块名’,....](可写多个或不写)。调用方式为from 目录名 import 模块名,如果在__init__.py文件中写了多个模块名,则可在掉用处from 目录名 import *,如果没有写模块名,则要在调用时将各个需要的模块名写出来。

模块目录下的模块子目录一样需要写__init__.py文件,在调用时则需from 目录名.子目录名 import 模块名。

下图为一个简单自制模块的调用

 

© 著作权归作者所有

共有 人打赏支持
P
粉丝 0
博文 3
码字总数 4028
作品 0
西安
系统管理员
私信 提问
日常 Python 编程优雅之道

3 个可以使你的 Python 代码更优雅、可读、直观和易于维护的工具。 Python 提供了一组独特的工具和语言特性来使你的代码更加优雅、可读和直观。为正确的问题选择合适的工具,你的代码将更易于...

02%
2018/07/22
0
0
10分钟快速入门Python函数式编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/82117264 作者 | Brandon Skerritt 译者 | 王天宇、琥珀 编辑 | 琥珀 出品...

AI科技大本营
2018/08/27
0
0
详解 Python 中的下划线命名规则

在 python 中,下划线命名规则往往令初学者相当疑惑:单下划线、双下划线、双下划线还分前后……那它们的作用与使用场景到底有何区别呢?今天就来聊聊这个话题。 1、单下划线() 通常情况下...

大数据之路
2015/03/15
0
0
Python 的 Magic Methods 指南

介绍 本指南是数月博客的总结。主题是魔术方法。 什么是魔术方法呢?它们是面向对象Python语言中的一切。它们是你可以自定义并添加“魔法”到类中的特殊方法。它们被双下划线环绕(比如__ini...

霄宇
2013/12/20
7.3K
9
python如何做到php中__DIR__的功能

DIR是php的魔术常量,以下摘自http://www.php.net/manual/zh/language.constants.predefined.php: DIR 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它 等价于 di...

樂天
2014/04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据剖析热点新闻:996、巴黎圣母院、奔驰维权为什么成为本周热搜

智能大数据专家表示:每一段重要的时期都会有一串隐秘的数字密码,请往下看: 本周共有50条新闻,作为嗅嗅的样本进行数据分析,得出以下统计图: 1.新闻热词折线统计图 在新闻标题及正文中,...

forespider
41分钟前
1
0
Coding and Paper Letter(六十四)

资源整理。 1 Coding: 1.交互式瓦片编辑器。 tile playground 2.R语言包autokeras,autokeras的R接口。autokeras是一个开源的自动机器学习的软件。 autokeras 3.斯坦福网络分析平台,用于网络...

胖胖雕
今天
1
0
最简单的cd命令是个大坑!

BASH Shell 是大多 Linux 发行版的默认 shell,BASH 有一些自己的内置命令,cd 就是其中的一个。 在centos6里面,系统中不存在 cd 的二进制文件。但是你仍然可以运行该命令,这是因为 cd 是 ...

gaolongquan
今天
1
0
spring获取bean的几种方式

使用jdk:1.8、maven:3.3.3 spring获取Bean的方式 pom.xml文件内容: <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="......

Vincent-Duan
今天
3
0
一段话系列-Linux中IO的同步、异步、阻塞、非阻塞

首先我们框定一下背景,我们探讨的是Linux系统下的IO模型。 同步和异步是针对内核操作数据而言的,同步是指内核串行顺序操作数据,异步是指内核并行(或并发)操作数据,然后通过回调的方式通...

EasyProgramming
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部