[ python ] 类中的一些特殊方法】的更多相关文章

孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我们定义类时是否在类的内部代码块中定义过它们,这些私有方法都是存在的.比如已经知道的 __init__ 方法就是其中一个. 一.__str__ 此方法将输出在本身的相关信息文本. 测试: class ghlh(object): name='孤荷凌寒' qq='578652607' newghlh=gh…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 与客户保持良好的关系可以使生产率加倍. -- Larry Bernstain 目录 类中的变量称为属性,类中的函数称为方法. 类中的属性分为: 实例属性:对象所有,互不干扰 类属性:类所有,所有对象共享 类中的方法分为: 实例方法:定义中有self 参数 类方法:定义中有cls 参数,使用@classmethod 装饰器 静态方法:定义中即没有self 参数,也没有cls 参数,使用@static…
item系列 __getitem__(self, item) 对象通过 object[key] 触发 __setitem__(self, key, value) 对象通过 object[key] = value 触发 __delitem__(self, key) 对象通过 del object[key] 触发 class Func: def __getitem__(self, item): # object[item] 触发 return self.__dict__[item] def __se…
在python类中有个__str__的特殊方法,该方法可以使print打印出来的东西更美观,在类里就可以定义,如下代码: class Test: def __init__(self, name, job): self.name = name self.job = job def __str__(self): return 'Name:' + self.name instance = Test('xiaoming', 'Teacher') print(instance) 代码中print(inst…
一. 引言 基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件.释放内存.输出日志.清理数据等. 二. 析构方法语法 Python中所有类的析构方法都是特殊方法__del__,析构方法同样是一个实例方法,其语法如下: del(self) self就是对象自身,所有实例方法都有该参数,真正调用时无需传递. 析构方法没有返回值要求. 析构方法语法很简单,没有需要过多解释的地方. 三. 析构…
1.staticmethod:静态方法和全局函数类似,但是通过类和对象调用. 2.classmethod:类方法和类相关的方法,第一个参数是class对象(不是实例对象).在python中class也是一个真实存在于内存中的对象,不同于其他语言只存在于编译期间. 3.普通方法和实例相关的方法,通过类实例调用. 4.代码示例 #coding:utf-8 ''' Created on 2015年5月29日 @author: canx ''' class Person: def __init__(se…
__str__:用于在print(对象)时,直接打印__str__的返回值 class Animal: def __init__(self, name): self.name = name def __str__(self): return self.name d = Animal("dog") print(d) __fun_name:私有方法 class Animal: def __init__(self, name): self.name = name def eat(self):…
习惯了函数式,动不动传一个函数.但是直接把函数作为类方法保存,再调用时会报错. 举一个unittest时的例子 class MyTestCase(unittest.TestCase): @classmethod def setUpClass(cls): print('测试\n') .... factory = make_factory(XXX) #非绑定函数必须这样用staticmethod()包装 #cls.factory = staticmethod(factory) cls.factory…
第8章 Python类中常用的特殊变量和方法 第8.1节 Python类的构造方法__init__深入剖析:语法释义 第8.2节 Python类的__init__方法深入剖析:构造方法案例详解 第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解 第8.4节 Python类中不是构造方法却胜似构造方法的__new方法__深入剖析:语法释义 第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执行顺序及参数关系案例详解 第8.6节 Pyt…
任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建.初始化.使用.垃圾回收,不同的阶段由不同的方法(角色)负责执行. 定义一个类时,大家用得最多的就是 __init__ 方法,而 __new__ 和 __call__ 使用得比较少,这篇文章试图帮助大家把这3个方法的正确使用方式和应用场景分别解释一下. 关于 Python 新式类和老式类在这篇文章不做过多讨论,因为老式类是 Python2 中的概念,现在基本没人再会去用老式类,新式类必须显示地继…
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量.在python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了.在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,也就是说,类的内部定义中,所有以双下划线开始的名字都被"翻译"成前面加上单…
一.__init__()方法 如果__init__()方法为 class Cat(): def __init__(self,num) : self.num=num Python中类的__init__()方法中形参:self.当Python通过__init__()方法创建实例时,将自动传入一个实参self,与类相关联的方法都会自动传递实参self,它是指向实例本身的引用,实例可以访问类中的属性和方法.. 以self为前缀的变量,都供类中的所有方法使用.self.num= num中num获取传递给n…
一 类中的方法 1.1 介绍 (1) 普通方法(2) 绑定方法 绑定到对象 (自动传递对象参数) 绑定到类 (自动传递类参数) (3) 静态方法 (无论类还是对象,都可以调用) class Plane(): def __init__(self,name): self.name = name #绑定到对象 def fly(self): print ("plane can fly") #普通方法 def capitain(): print ("will have a capita…
上节<第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执行顺序及参数关系案例详解>通过案例详细分析了两个方法的执行顺序,不知大家是否注意到了,在上述代码中__new__方法调用父类的__new__方法时,传递参数只传递了cls一个实参,而没有传递后面两类参数(在本例中只有第一类参数中有1个实参10).这个问题也困扰了老猿,我们先验证一下,如果传递全部参数会怎样. 一. 案例1:调用object类的__new__传参验证 我们将上节的类中的__new__方…
一.    引言 在本博前面的内容都对构造方法__init__进行了介绍,也在前面章节引入了__new__方法,但老猿认为__new__方法比构造方法__init__更应该属于构造方法.这是因为在Python中,__new__方法是在实例对象创建时执行的,而构造方法__init__是实例创建后执行的. 二.    __new__方法介绍 __new__方法是Python新式类引入的,__new__通常用于控制生成一个新实例的过程.它是类级别的静态方法,是在创建实例对象前执行,如果自定义类中没有重…
上节介绍了使用实例的__dict__查看实例的自定义属性,其实还可以直接使用__dict__定义实例变量和实例方法. 一. 使用__dict__定义实例变量 语法: 对象名. dict[属性名] = 值 语法释义: "对象名"为要增加实例变量的对象,如果是在实例方法中,应该为"self". 属性名为要定义实例变量的名字,必须是字符串类型,即变量名必须用引号. 上述语法相当于: 对象.属性 = 值. 这是由于Python中所有变量都存在对应名字空间的字典中,定义变量就…
本章介绍了Python类中常用的特殊变量和方法,这些特殊变量和方法都有特殊的用途,是Python强大功能的基石之一,许多功能非常有Python特色.由于Python中一切皆对象,理解这些特殊变量和方法对掌握Python的知识有非常大的帮助. 我们使用或重写这些方法,可以对类或其实例实现: 输出希望的信息: 截获相关属性的访问: 改变对象间比较的规则: 改变对象初始化的过程: 查看子类和父类: 查看类命名空间: 截获对象销毁处理. 掌握这些方法,就意味着学习Python中类的知识已经进入提高阶段.…
一. 面向对象初识 我们在生活中做事都是面向过程的,前面实现一些基本逻辑功能代码也是用面向过程的语句实现的,后来学了函数,把这些功能又装到了函数里.但用面向过程的方法去写程序,只能实现一个功能,我们要实现很多功能时,需要写很多个代码块,每一个代码块的作用域都是全局的,要相对一个功能进行改动,还要考虑与其它代码块的联系,这样就造成了代码的可扩展性和维护性.那么装到函数里就好了吗?装到函数里变量只能作用于函数里,其他的函数无法使用变量.这时可以用面向对象的程序设计方法解决这些问题.面向对象的核心是对…
学习并转自:https://blog.csdn.net/geerniya/article/details/77487941 1. 不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. class Rectangle(): def getPeri(self,a,b): return (a + b)*2 def getArea(self,a,b): return a*b rect = Rectangle() print(rect.getPeri(3,4)) print(rect.get…
Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(self): print 'creat A ', Base.__init__(self) class childB(Base): def __init__(self): print 'c…
Python类中的self到底是干啥的 Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了. 首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的.self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数. self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗(为了和其他编…
[转]python类中super()和__init__()的区别 单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(self): print 'creat A ', Base.__init__(self) class childB(Base): def __init__(self): print '…
Python类属性访问的魔法方法: 1. __getattr__(self, name)- 定义当用户试图获取一个不存在的属性时的行为 2. __getattribute__(self, name)- 定义当该类的属性被访问时的行为 注意:当__getattr__与__getattribute__同时重写时,访问属性时,优先调用__getattribute__,只有当被访问的属性不存在时才触发__getattr__ 3. __setattr__(self, name, value)- 定义当一个…
第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一.    案例说明 本节定义了类StaticMethod,在类中定义了静态方法stmethod.类方法clsmethod和实例方法objmethod,重写了__new__(self)方法.演示内容包括: 1.    在类方法clsmethod中通过cls和类名两种方式调用静态方法stmethod: 2.    在实例方法objmetho…
第7.17节  Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析 静态方法也是通过类定义的一种方法,一般将不需要访问类属性但是类需要具有的一些能力可以静态方法提供. 一.    静态方法定义 1.    语法 @ staticmethod  def 方法名(参数): 方法体 2.    定义说明: 1)    上述语法定义中,@ staticmethod 称为静态方法装饰器,凡是静态方法定义都必须有该装饰器. 2)    静态方法与实例方法和类方法不同的是,没有类…
第7.14节 Python类中的实例方法详析 一.    实例方法的定义 在本章前面章节已经介绍了类的实例方法,实例方法的定义有三种方式: 1.    类体中定义实例方法 第一种方式很简单,就是在类体中定义,所有在类中定义的方法默认是实例方法.定义实例方法与定义函数基本相同,只是Python要求实例方法的第一个形参必须为self,也就是实例对象本身,因此实例方法至少应该有一个self参数.关于self的说明,请大家参考老猿前面的章节<第7.5节 揭开Python类中self的面纱>.如下例子:…
创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法). ackage com.chuoji.text01; public class People { protected double height; protected double weight; public double getHeight() { return height; } public void setHeight(double height)…
Integer类中的. 关于parseInt()方法的API文档.  返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API文档 返回的是int类型的. String类中的. int -> Stringint i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i);这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都…
相信很多java程序员在写代码的时候遇到判断某字符串是否为空的时候会用到StringUtils类中isBlank和isEmpty方法,这两个方法到底有什么区别呢?我们用一段代码来阐述这个区别吧: @Test public void blankEmpty() { String str = " "; System.out.println("Is empty ? " + StringUtils.isEmpty(str)); System.out.println("…
在java类中快速打出main方法有两种途径: 1. 在新建类时,在New Java Class窗口中,将public static void main ( String[ ] args ) 前面打上勾,这样在生成类时会自动生成main方法,如下图所示: 2. 使用自动补齐快捷键,在类中打出main后,按快捷键alt+/,会出现提示main方法,选中回车即可,如下图所示:…