Python的类和函数的魔法】的更多相关文章

class CustomClass: def customFun(self, id): print("fun_1",id ) if __name__ == '__main__': # 类的实例化 classOne =CustomClass() # 类的函数 classFuns = [CustomClass.customFun] # 传统的函数调用方式为: 通过类的实例化对象 调用 函数 # 非传统的函数调用方式 :调用类的函数,参数传递:类的实例化对象,函数的参数 classFuns[…
class RunningLog: def __init__(self,func): self._func=func self._func_name = func.__name__ def __call__(self,func_name,level=None): self.level=level value=getattr(self, func_name.__str__())() self._func(func_name,self.level) return 'result: '+value d…
前言 前面已经总结了关键字.运算符与魔法方法的对应关系,下面总结python内置函数对应的魔法方法. 魔法方法 数学计算 abs(args):返回绝对值,调用__abs__; round(args):返回四舍五入的值,调用__round__; math.floor():向下取整,调用__floor__; math.ceil():向上取整,调用__ceil__; math.trunc():求一个值距离0最近的整数,调用__trunc__; divmod(a,b):返回商和余,调用__divmod_…
一.魔法方法特点 被双上下滑线包围 魔法方法是面向对象的Python的一切,如果你不知道魔法方法,说明你还没能意识到面向对象的Python的强大(不是说Python脚本) 通过对制定方法的重写,完全可以让python根据个人的用途去实现! 二.魔法方法 http://bbs.fishc.com/forum.php?mod=viewthread&tid=48793&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403 1.构造相关 __init__(…
面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明(注意:对外透明的意思是,外部调用者可以顺利的得到自己想要的任何功能,完全意识不到内部细节的存在)优点: 1.控制对数据的操作将数据隐藏起来这不是目的.隐藏起来然后对外提供操作该数据的接口,然后我们可以在接口附加上对该数据操作的限制,以此完成对数据属性操作的严格控制2.隐藏实现方法实现代码例如:#取款…
先划一下重点: 6个魔法方法: 动态操作属性的4个函数: 魔法方法 魔法方法的简单介绍 魔法方法的命名规则:方法名(前后各有2个下划线). 通常情况下,不会主动去调用魔法方法,而是在满足一定的条件下,会自动去调用魔法方法. 常用的魔法方法有6个,分别是:new.del.str.repr.bytes.call,下面我为大家一一讲解. new方法 注意1 :在创建对象的时候,会首先调用该方法,init方法还是在 new方法之后被调用: 注意2 :一个不需要@classmethod修饰的类方法: 注意…
http://cowboy.1988.blog.163.com/blog/static/75105798201091141521583/ 这篇文章总结的非常好 主要注意的地方是 1,在类内调用成员函数 要用类名调用,而且要传入self(非静态成员函数是实例相关的) 如: class Foo(object):     def bar(self):         print "bar!"     def spam(self):         bar(self)     # 错误,引发N…
1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照步骤一一解决,也可以说 将一个复杂的问题,流程化(为其制定一个固定的实现流程),从而变得简单化例如:要将大象装进冰箱 打开冰箱 装进大象 关闭冰箱门 以上实现方式 是面向过程的实现方式 面向过程编程优缺点: 优点:复杂的问题,简单化, 缺点:由于其实现流程是固定的,一旦中间某一个步骤发生了修改,将导…
Python类属性访问的魔法方法: 1. __getattr__(self, name)- 定义当用户试图获取一个不存在的属性时的行为 2. __getattribute__(self, name)- 定义当该类的属性被访问时的行为 注意:当__getattr__与__getattribute__同时重写时,访问属性时,优先调用__getattribute__,只有当被访问的属性不存在时才触发__getattr__ 3. __setattr__(self, name, value)- 定义当一个…
Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程:    1.线程是一堆指令,是操作系统调度的最小单位    2.线程具有执行能力 ​   3.线程依赖于进程 ​   4.具有主从关系(人为定义,每一个进程都至少有一个主线程 二丶开启线程的两种方式(Thread) 类的方式开启线程 ### 利用到Thread from threading import Thread class MyThr…
  # .开始之前先明确一下with机制 # 1.类包函数__enter__()和__exit__()函数,即是可以被上下文管理的类 # __enter__用来执行with时的方法,__exit__返回对象给with的as 对象 # 2.通过函数实现要用到contextmanager装饰器与yield关键字 # 一.通过类来实现支持whith上下文管理功能 class fp(object): def __init__(self, fileobj, mode): self.fileobj = op…
一:函数装饰函数 def wrapFun(func): def inner(a, b): print('function name:', func.__name__) r = func(a, b) return r return inner @wrapFun def myadd(a, b): return a + b print(myadd(2, 3)) 二:函数装饰类 def wrapClass(cls): def inner(a): print('class name:', cls.__na…
一:函数装饰函数 def wrapFun(func): def inner(a, b): print('function name:', func.__name__) r = func(a, b) return r return inner @wrapFun def myadd(a, b): return a + b print(myadd(2, 3)) 二:函数装饰类 def wrapClass(cls): def inner(a): print('class name:', cls.__na…
一.关系 包一般指文件夹或者安装包(安装包一般也是压缩后的文件夹),里面包含多个.py文件(必须有一个__init__.py文件),一般也含有多个子包(或子文件夹): 一般一个.py文件就是一个模块,一个模块可以包含多个类或函数,一般只有一个类或函数 一个类里一般包含多个函数 一个函数一般包含7~15行代码 模块的名字不能与其下的类和函数的名字相同,导入时容易出现位置错误 二.调用 # 一般都是调用其它包中的模块下的类或者函数: # print(__file__):查看当前模块的绝对路径: 导入…
call函数可以把类变成函数来调用call方法 class Demo(): def __init__(self, name): self.name = name def __call__(self): print(self.name) Demo('大虫子')() # 输出 大虫子 由此可以看出,类实例化后,可以直接调用call函数,执行的是call函数的代码.…
#装饰器:对类或者函数进行功能的扩展  很多需要缩进的没有进行缩进'''#第一步:基本函数def laxi(): print('拉屎')#调用函数laxi()laxi() print('=======================================')#第二步:扩展函数的功能(不能修改原函数)#用于扩展基本函数的函数#把一个函数(laxi函数)作为一个整体传给另外一个函数(kuozhan函数)#这个函数(kuozhan函数)用形参func收到了laxi函数,收到之后在中间#调用l…
假设模块文件名是data_used_to_test.py,放在tests文件夹下 文件夹结构如下: project |-tests |-data_used_to_test.py 文件内包含一个test_class类: class test_class(): def test_func(arg): return "hello {}".format(arg) 代码全部基于 Python3.6.4 使用imp 用imp.find_module查找模块 In [1]:file, pathnam…
转载自  http://blog.jobbole.com/21351/ 类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Python中这一点仍然成立:           Python   1 2 3 4 5 6 >>> class ObjectCreator(object): …       pass … >>> my_obje…
python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程序员迭代非序列类型,包括用户定义的对象.   迭代器是在版本 2.2 被加入 Python 的,它为类序列对象提供了一个类序列的接口.序列是一组数据结构,你可以利用它们的索引从0 开始一直“迭代“ 到序列的最后一个条目.用“计数“的方法迭代序列是很简单的.Python 的迭代无缝地支持序列对象,而且…
Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区别,以及Python的多态与简单继承. 1. 面向对象编程 1.1 对象和类 面向对象这种思想其实只是人类思维在程序设计领域的一种自然延伸.程序设计领域将现实世界中事物自然延伸为"对象",事物拥有其属性和作用,对象也一样,拥有属性以及方法:复杂的面向对象程序就是基于一个个基本的对象,相互交…
一. 鸭子类型和多态 1.什么是鸭子类型: 在程序设计中,鸭子类型(英语:Duck typing)是动态类型和某些静态语言的一种对象推断风格."鸭子类型"像多态一样工作,但是没有继承.“鸭子类型”的语言是这么推断的:一只鸟走起来像鸭子.游起泳来像鸭子.叫起来也像鸭子,那它就可以被当做鸭子.也就是说,它不关注对象的类型,而是关注对象具有的行为(方法). 可以看出,Cat,Dog,Duck中有相同的方法say(),当有一个函数调用Duck类时并调用say()方法,我们传入Cat类和Dog类…
孤荷凌寒自学python第二十一天初识python的类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 类是面向对象的编程语言非常重要的概念. 编程语言的进化史中从顺序编程到结构化编程,最后才进化出面向对象的编程语言.今天主流的非常流行的编程语言如java等都是优秀的面向对象的编程语言.当然我感觉python也不例外,虽然目前我对python还没有深入了解. 类的概念是向现实世界借鉴了人们理解世界的常识而得出的: 人类认识世界都是分门别类进行的,比如,我们把整个所见的事物分为有生命的和无…
一.OO = Object Oriented 面向对象 OOP面向对象编程.OOA面向对象分析.OOD面向对象设计 二.属性+方法——>类(数据和函数) class Turtle(): #类名约定用大写 #属性 color = #方法 def climb(self): pass def run(self): pass tt = Turtle() #创建对象 tt.run() #调用 class Myclass(list):继承list pass list2 = Myclass() list2.a…
类也是对象 在理解元类之前,你需要先掌握Python中的类.Python 中的类概念借鉴 Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.当然在 Python 中这一点也是成立的. >>> class ObjectCreator(object): ... pass ... >>> my_object = ObjectCreator() >>> print my_object <__main__.…
1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 -->>函数--->def函数的定义:x自变量 y因变量 y是x的函数编程语言中的函数定义:函数是逻辑结构化和过程化的一种编程方法python中函数定义方法: #!/usr/bin/env python #_*_coding:utf-8_*_ def test(x): "The functio…
Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象 类的私有属性: __private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问 在类内部的方法中使用时 self.__private_attrs 类的方法 在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须…
类与对象 1.什么是类 类和函数一样是程序编程的一种方式,在处理某些问题的时候类比函数更加适合让编程变得简化,在python里面函数式编程和类编程都是为了简化代码的一种编程方式,具体应用那个则由具体问题 对应. 2.什么是对象 对象是由类创造出来的变量,它可以调用类里面的所以函数(方法),效果就像函数的函数名,可以操作函数一样. 3.类与对象的编程方式 liu是类,a为liu这个类创造出来的对象. 4.类里面self的作用 在类编程里self是一个重要的参数,它在类的方法里面无处不在,那么它到底…
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii 一.数学运算类 abs(x) 求绝对值1.参数可以是整型,也可以是复数2.若参数是负数,则返回负数的模 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取商和余数注意:整型.浮点型都可以 float([x]) 将一个字符串或数转换为浮点数.如果无参数将返…
python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callable 函数, 可以检查一个对象是否是可调用的 (无论是直接调用或是通过 apply). 对于函数, 方法, lambda 函式, 类, 以及实现了 _ _call_ _ 方法的类实例, 它都返回 True. def dump(function):if callable(function):print…
python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同. 仍以Student类为例,在Python中,定义类是通过class关键字: class Student(object): pass class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,…