书接上回,继续来讲讲关于类及其方法的一些冷知识和烫知识.本篇将重点讲讲类中的另一个重要元素--方法,也和上篇一样用各种神奇的例子,从原理和机制的角度为你还原一个不一样的Python.在阅读本篇之前,推荐阅读一下上篇的内容:Python科普系列--类与方法(上篇) 对象方法的本质 说到面向对象编程,大家应该对方法这一概念并不陌生.其实在上篇中已经提到,在Python中方法的本质就是一个字段,将一个可执行的对象赋值给当前对象,就可以形成一个方法,并且也尝试了手动制造一个对象. 但是,如果你对Pyth…
欢迎来到新的系列,up又开新坑了~~ 实际上,Python作为一门易用性见长的语言,看上去简单,却仍然有很多值得一说的内容,因此这个系列会把Python中比较有意思的地方也给科普一遍.而另一方面,关于Python的学习资料在中文互联网上已经随处可见,虽然大都是入门向.实用向的,不过资料覆盖面也已经挺全乎的了.所以这个系列将会着重去讲一些现有中文资料里不常见到的硬核内容,尝试去用另外一个视角去讲解Python,也因此,这个系列更适合有最基本Python使用基础,对基本概念有初步认识的读者. 本文将…
全面了解python中的类,对象,方法,属性 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征.它会汪汪叫,会摇尾巴等是它的行为. 我们在描述一个真实对象(物体)时包括两个方面: 它可以做什么(行为) 它是什么样的(属性或特征). 在python中,一个对象的特征也称为属性(attribute).它所具…
引言 我visual studio 2017就算体积巨大.启动巨慢.功能简陋也不会安装PyCharm的,嘿呀,真香.好吧,为了实现socket网络编程,更换了软件. 正文 静态方法 只是在名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性.例子. class Student(object): def __init__(self,name): self.name = name @staticmethod#静态方法 def name(self): print('名字是%s'%(self.…
class Cat(Animal): def __init__(self): import warnings warnings.warn("Cat类带删除线了", DeprecationWarning) def run(self): import warnings warnings.warn("run方法带删除线了", DeprecationWarning)…
我们通过下面的代码来对参数self进行理解 #coding:utf-8 2 class washer(): 3 def wash(self): 4 print("洗衣服") 5 print(self) 6 7 haier = washer()#创建对象 8 print(haier) 9 haier.wash() 10 #运行结果 <__main__.washer object at 0x7f58cda4dc18> 洗衣服 <__main__.washer object…
一. 引言 前面章节介绍了类中的构造方法和__new__方法,并分析了二者执行的先后顺序关系.__new__方法在__init__方法前执行,__new__方法执行后才返回实例对象,也就是说__new__方法执行前实例并未创建,构造方法中的参数self是__new__方法执行后传递过去的实例.那如果__new__方法未返回实例对象会怎样呢? 二. 案例说明 本节老猿准备验证两种情况: 1. 重写的__new__方法不返回实例会怎样? 2. 重写实例调用父类的__new__方法时,cls如果不传实…
一. 引言 前面两节分别介绍了Python类中的__str__和__repr__方法的作用和语法,所有新式类都支持这两个方法,因为object类实现了这两个方法,但实际上各位开发者在自定义类的过程中,应该重写相关方法,特别是__str__输出的应该是用户关注的容易理解的信息,因此对那些负责与客户交互的类,至少更应该重写__str__方法. 二. 重写__repr__方法 object类提供的__repr__方法,只是简单输出模块名.类名以及对象的ID信息,如果开发者要输出开发人员足够知悉的属性,…
方法 类方法@classmethod,实例方法,静态方法@staticmethod,特殊方法,__init__ 形式上的区别:调用是通过类和实例进行,不能直接调用,有自己的特殊参数,如__init__有self,类方法有参数class,有自己的声明方式. 实质上的区别:类方法与类绑定,实例方法绑定实例,静态方法无绑定(和函数一样,只不过用类和实例进行调用),特殊方法某些场景会自动调用. 特殊方法 数字计算:加减乘除都是通过特殊方法来实现的,round是四舍五入. 调用方法:str()转化成字符串…
1.#面向对象 #抽象接口 === 抽象类 #就是架构师给你一个架子,你们去写,如果满足不了直接报错 #python2 print("python2---抽象类".center(20,'#')) import abc #需要在python2中测试,如果直接运行会报错 #因为没有调用send方法 class Alert(object): '''报警基类''' __metaclass__ = abc.ABCMeta @abc.abstractmethod def send(self): #…