首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
第7.16节 案例详解:Python中classmethod定义的类方法
】的更多相关文章
第7.16节 案例详解:Python中classmethod定义的类方法
第7.16节 案例详解:Python中classmethod定义的类方法 上节介绍了类方法定义的语法以及各种使用的场景,本节结合上节的知识具体举例说明相关内容. 一. 案例说明 本节定义的一个类ClsMethod,在类内定义了类方法clsmeth1.getobjcnt,演示内容包括: 1. 类方法的定义: 2. 在类方法clsmeth1中通过cls方式和类名两种方式调用类方法getobjcnt: 3. 在实例方法__init__中通过类名和"self.__class__…
第7.15节 Python中classmethod定义的类方法详解
第7.15节 Python中classmethod定义的类方法详解 类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法.本节介绍类方法的定义和使用. 一. 类方法的定义 在类中定义的方法,默认是实例方法,要定义类方法,需要用到单独的语法. 1. 语法: @classmethod def 方法名(cls,其他参数): 方法体 2. 定义说明: 1) 上述语法定义中,@classmethod称为类方法装饰器,凡是类方法定义都必须有该装饰器. 装饰器是Pytho…
第7.20节 案例详解:Python抽象类之真实子类
第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一. 案例说明 本节定义了图形的抽象基类Shape,要求提供求面积和周长的抽象方法,然后派生两个子类长方形Rectangle和圆Circle,在这两个子类里定义了各自的构造方法,并实现了求面积和周长的方法. 二. 案例代码 1. 导入abc模块中的ABC, abstractmethod from abc imp…
第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法
第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一. 案例说明 本节定义了类StaticMethod,在类中定义了静态方法stmethod.类方法clsmethod和实例方法objmethod,重写了__new__(self)方法.演示内容包括: 1. 在类方法clsmethod中通过cls和类名两种方式调用静态方法stmethod: 2. 在实例方法objmetho…
第7.13节 案例详解:Python类变量
第7.13节 案例详解:Python类变量 上节介绍了类变量的定义和使用方法,并举例进行了说明.本节将通过一个更完整的例子来说明. 一. 定义函数dirp def dirp(iter): return [i for i in dir(iter) if not i.startswith('__')] 该函数的作用是去掉对象属性中以双下划线开头的变量,双下划线开头的变量要么是私有变量.要么是特殊变量(双下划线结尾时),实际上私有变量Python进行了转换,真正存储时不是双下划线开头,因此该函数…
详解Python中re.sub--转载
[背景] Python中的正则表达式方面的功能,很强大. 其中就包括re.sub,实现正则的替换. 功能很强大,所以导致用法稍微有点复杂. 所以当遇到稍微复杂的用法时候,就容易犯错. 所以此处,总结一下,在使用re.sub的时候,需要注意的一些事情. 解释具体的注意事项之前,先把其具体的解释贴出来: re.sub re.sub(pattern, repl, string, count=0, flags=0) Return the string obtained by replacing the…
详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)
详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类 Python中函数参数定义及调用函数时传参大体可分必备参数.关键字参数.默认可省略参数.不定长元组参数.不定长关键字参数等,下面通过函数定义及调用上的不同情况深入解析这些中参数的不同及应用场景. 为了更好的理解不同参数的具体意义,所以下面演示代码中,使用的参数数量较多.具体是一个调用MySQL数据库配置参数的函数所需要的参数,我们用这个…
举例详解Python中的split()函数的使用方法
这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下 函数:split() Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)os.path.split():按照路径将文件名和路径分割开 一.函数说明1.split()函数语法:st…
详解Python中内置的NotImplemented类型的用法
它是什么? ? 1 2 >>> type(NotImplemented) <type 'NotImplementedType'> NotImplemented 是Python在内置命名空间中的六个常数之一.其他有False.True.None.Ellipsis 和 __debug__.和 Ellipsis很像,NotImplemented 能被重新赋值(覆盖).对它赋值,甚至改变属性名称, 不会产生 SyntaxError.所以它不是一个真正的“真”常数.当然,我们应该永远不…
第7.9节 案例详解:Python类封装
上节介绍了Python中类的封装机制,本节结合一个具体例子进行详细说明. 我们定义一个Person类,其内部有姓名.年龄和类型三个实例变量,并定义了相关的存取方法: class Person(): def __type(self): if self._age<16: return '青少年' elif self._age<60: return '中年' else:return '老年' def __init__(…
详解Python中的循环语句的用法
一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句.二.详解1.if语句 Python中的if子句由三部分组成:关键字本身.用于判断结果真假的条件表达式以及当表达式为真或者非零时执行的代码块.if 语句的语法如下: ? 1 2 if expression: expr_true_suite if 语句的expr_true_suite代码块只有在条件…
详解python中@的用法
python中@的用法 @是一个装饰器,针对函数,起调用传参的作用. 有修饰和被修饰的区别,‘@function'作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义). 代码1 def funA(desA): print("It's funA") def funB(desB): print("It's funB") @funA def funC(): print("It's funC") 结果1 It's funA 分析1…
Python Deque 模块使用详解,python中yield的用法详解
Deque模块是Python标准库collections中的一项. 它提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除. https://blog.csdn.net/qq_33374294/article/details/89339688 python中yield的用法详解 yield https://blog.csdn.net/mieleizhi0522/article/details/82142856 …
详解python中的描述符
描述符介绍 总所周知,python声明变量的时候,不需要指定类型.虽然现在有了注解,但这只是一个规范,在语法层面是无效的.比如: 这里我们定义了一个hello函数,我们要求name参数传入str类型的变量,然而最终我们传入的变量却是int类型,pycharm也很智能的提示我们需要传入str.但我就传入int,它能拿我怎么样吗?显然不能,这个程序是可以正常执行的.因此这个注解并没有在语法层面上限制你. 于是便出现了描述符,我们来看看描述符是干什么的. class Descriptor: "&quo…
详解 Python 中的下划线命名规则
在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后……那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单下划线(_)会在以下3种场景中使用: 1.1 在解释器中: 在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果.这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用. >>> _ Traceback (most recent call last): Fil…
详解Python中的__init__和__new__(静态方法)
一.__init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: #-*- coding: utf-8 -*- class Person(object): """Silly Person""" def __init__(self, name, age): self.name = name self.age = age def _…
详解Python中的下划线
本文将讨论Python中下划线(_)字符的使用方法.我们将会看到,正如Python中的很多事情,下划线的不同用法大多数(并非所有)只是常用惯例而已. 单下划线(_) 通常情况下,会在以下3种场景中使用: 1.在解释器中:在这种情况下,“_”代表交互式解释器会话中上一条执行的语句的结果.这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用. Python 1 2 3 4 5 6 7 8 9 10 >>> _ Traceback (most re…
详解Python中的__new__、__init__、__call__三个特殊方法(zz)
__new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self)__init__ : 对象的初始化, 是一个实例方法,第一个参数是self.__call__ : 对象可call,注意不是类,是对象. 先有创建,才有初始化.即先__new__,而后__init__.上面说的不好理解,看例子. 1.对于__new__ class Bar(object): pass class Foo(object): def __new__(cls, *…
详解python中的生成器表达式
什么是生成器表达式 还记得列表解析吗?我们把[]换成()就变成生成器表达式了. g = (x for x in [1, 2, 3, 4]) print(g) # <generator object <genexpr> at 0x000001CDC3A6AA50> # 我们可以调用__next__()进行迭代 print(g.__next__()) # 1 # 还可以使用list一次性全部迭代 # 没有1是因为上面已经把第一个元素yield出来了 print(list(g)) # […
详解Python中的__init__和__new__
转载:https://my.oschina.net/liuyuantao/blog/747164 1.__init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: # -*- coding: utf-8 -*- class Person(object): """Silly Person""" def __init…
第7.11节 案例详解:Python类实例变量
上节老猿介绍了实例变量的访问方法,本节结合一个具体案例详细介绍实例变量访问. 本节定义一个Vehicle类(车),它有三个实例变量self.wheelcount(轮子数).self.power(动力).self.totaldistance(累计行驶里程),但在构造方法内只定义了前2个,第3个在其他实例方法中访问.一.类定义 class Vehicle(): def __init__(self,wheelcount, power): self.wheelcount,self.p…
第7.7节 案例详解:Python类继承机制
本节实现一个类继承的小程序,下面一边结合代码一边介绍相关继承的知识.例子以车.汽车为例,车为父类.汽车为子类. 一. 定义父类Vehicle class Vehicle(): def __init__(self,wheelcount, power):#构造方法,参数有轮子数和动力 self.wheelcount,self.power,self.totaldistance = wheelcount,power,0 #初始化行驶总里程为0 def get…
详解python中的__init__与__new__方法
一.__init__和__new__方法执行的顺序? 在面向对象中介绍了关于对象创建的过程,我们知道__new__方法先于__init__方法执行. 二.__new__方法是什么? 首先,我们先来看下下面的代码 class person(object): def __init__(self,name,age): self.age=age self.name=name print('exec init....') def __new__(cls, *args,**kwargs): print('e…
详解Python中的join()函数的用法
函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 os.path.join(): 将多个路径组合后返回 一.函数说明 1.join()函数 语法: 'sep'.join(seq) 参数说明 sep:分隔符.可以为空 seq:要连接的元素序列.字符串.元组.字典 上面的语法即:以sep作为分隔符,将s…
详解Python中的生成器表达式(generator expression)
介绍 1.生成器表达式(generator expression)也叫生成器推导式或生成器解析式,用法与列表推导式非常相似,在形式上生成器推导式使用圆括号(parentheses)作为定界符,而不是列表推导式所使用的方括号(square brackets). 2.与列表推导式最大的不同是,生成器推导式的结果是一个生成器对象.生成器对象类似于迭代器对象,具有惰性求值的特点,只在需要时生成新元素,比列表推导式具有更高的效率,空间占用非常少,尤其适合大数据处理的场合. 3.使用生成器对象的元素时,可以…
详解Python中的迭代器和使用
对于一个列表,a = [1, 2, 3, 4],我们最常见的遍历方式就是: a = [1, 2, 3, 4] for item in a: print item 这里我们研究一种新的方式,就是迭代器. 在C++的STL中大量使用了迭代器,迭代器的作用当然就是遍历容器中的元素,而且他的好处就在于分离了容器的实现和遍历操作,不管我们使用什么类型的容器,使用迭代器的操作几乎是如出一辙. 看下面的代码: >>> a = [2, 3, 4] >>> it = iter(a)…
详解Python中的相对导入和绝对导入
Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的.包内导入即是包内的模块导入包内部的模块. Python import 的搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONPATH 中指定的路径列表中依次搜索 在 Python 安装路径的 lib 库中搜索 Python import 的步骤 python 所有加载的模块信息都存放在 sys.modules 结构中,当 import 一个模块时,会按如下步骤来进行 如果是 import A,检查 sys.modules …
Python | 详解Python中的协程,为什么说它的底层是生成器?
今天是Python专题的第26篇文章,我们来聊聊Python当中的协程. 我们曾经在golang关于goroutine的文章当中简单介绍过协程的概念,我们再来简单review一下.协程又称为是微线程,英文名是Coroutine.它和线程一样可以调度,但是不同的是线程的启动和调度需要通过操作系统来处理.并且线程的启动和销毁需要涉及一些操作系统的变量申请和销毁处理,需要的时间比较长.而协程呢,它的调度和销毁都是程序自己来控制的,因此它更加轻量级也更加灵活. 协程有这么多优点,自然也会有一些缺点,其中…
第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter
上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一. 案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只定义了长度属性的操作.包括三个完整的装饰器,如果大家想试一下少一个操作方法的装饰器,可以直接把对应装饰器去除即可. 二. 案例代码 1. 定义类Rectangle class Rectangle(): def __init__(self,length,width): self.w…
第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样?
第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样? 一. 案例说明 我们上节提到了,使用property函数定义的属性不要与类内已经定义的普通实例变量重名,如果是重名会发生什么呢?本案例通过这个例子一是说明重名可能产生的后果,也想说明property定义属性在类内访问会遇到什么情况. 为了直接说明问题,本案例还是以上节的Rectangle为例,不过去掉了大部分属性和方法,只留下了可以说明问题的必要代码. 二. 案例代码 1. 定义类,类…