第7.14节 Python类中的实例方法详析 一.    实例方法的定义 在本章前面章节已经介绍了类的实例方法,实例方法的定义有三种方式: 1.    类体中定义实例方法 第一种方式很简单,就是在类体中定义,所有在类中定义的方法默认是实例方法.定义实例方法与定义函数基本相同,只是Python要求实例方法的第一个形参必须为self,也就是实例对象本身,因此实例方法至少应该有一个self参数.关于self的说明,请大家参考老猿前面的章节<第7.5节 揭开Python类中self的面纱>.如下例子:…
上节介绍了使用实例的__dict__查看实例的自定义属性,其实还可以直接使用__dict__定义实例变量和实例方法. 一. 使用__dict__定义实例变量 语法: 对象名. dict[属性名] = 值 语法释义: "对象名"为要增加实例变量的对象,如果是在实例方法中,应该为"self". 属性名为要定义实例变量的名字,必须是字符串类型,即变量名必须用引号. 上述语法相当于: 对象.属性 = 值. 这是由于Python中所有变量都存在对应名字空间的字典中,定义变量就…
第7.17节  Python类中的静态方法装饰器staticmethod 定义的静态方法深入剖析 静态方法也是通过类定义的一种方法,一般将不需要访问类属性但是类需要具有的一些能力可以静态方法提供. 一.    静态方法定义 1.    语法 @ staticmethod  def 方法名(参数): 方法体 2.    定义说明: 1)    上述语法定义中,@ staticmethod 称为静态方法装饰器,凡是静态方法定义都必须有该装饰器. 2)    静态方法与实例方法和类方法不同的是,没有类…
上节<第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执行顺序及参数关系案例详解>通过案例详细分析了两个方法的执行顺序,不知大家是否注意到了,在上述代码中__new__方法调用父类的__new__方法时,传递参数只传递了cls一个实参,而没有传递后面两类参数(在本例中只有第一类参数中有1个实参10).这个问题也困扰了老猿,我们先验证一下,如果传递全部参数会怎样. 一. 案例1:调用object类的__new__传参验证 我们将上节的类中的__new__方…
第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解 一.    引言 上两节介绍了构造方法的语法及参数,说明了构造方法是Python的类创建实例后首先执行的方法,并说明如果类没有重写构造方法,Python将会给出默认的__init__方法.上述介绍适用于自定义类没有自定义父类的情况,如果自定义类是从其他自定义类派生的,又会怎样呢? 二.    构造方法与继承 为了保障相关逻辑的正确性,在子类重写构造方法时,必须调用超类(继承的类)的构造方法,否则可能无法正确地初始化对象…
一. 引言 根据前面章节介绍的内容,我们知道实例变量.实例方法的定义可以通过以下方法进行: 在类体中直接定义实例变量.实例方法: 在实例方法中定义实例变量.实例方法: 在类体外调用方使用赋值语句赋值定义实例变量.实例方法: 给实例的__dict__字典中插入元素定义实例可以定义实例变量. 其实还有一种方法,就是调用object类的__setattr__方法,也可以在实例方法或类体外定义实例变量.实例方法. 二. 调用语法 调用语法:对象名.setattr( 实例属性名, 值): 语法释义: 1)…
一.    引言 在本博前面的内容都对构造方法__init__进行了介绍,也在前面章节引入了__new__方法,但老猿认为__new__方法比构造方法__init__更应该属于构造方法.这是因为在Python中,__new__方法是在实例对象创建时执行的,而构造方法__init__是实例创建后执行的. 二.    __new__方法介绍 __new__方法是Python新式类引入的,__new__通常用于控制生成一个新实例的过程.它是类级别的静态方法,是在创建实例对象前执行,如果自定义类中没有重…
终于介绍完了__init__方法和__new__方法,接下来轻松一下,本节介绍类中内置的__bases__属性. 一. 语法释义 Python 为所有类都提供了一个 bases 属性,通过该属性可以查看该类的所有直接父类,该属性返回所有直接父类组成的元组.注意是直接父类!!! 使用语法:类名.bases 二. 举例说明 举例:定义三个类Vehicle(车).Automobile(汽车).Car(小汽车),为了说明问题,将Car设置为继承自Vehicle和Automobile两个类,而Automo…
前面一节介绍了构造方法定义的语法,并进行了语法解释说明,本节将通过案例来说明构造方法参数传递及返回值的情况. 一.    案例说明 本节定义一个汽车类,它有四个实例变量:wheelcount, power,oilcostperkm,totaldistance,分别对应轮子数.动力.每公里油耗.行驶总里程.为了聚焦内容,我们只在构造方法中显示参数传入值,不做任何处理.类定义如下: class Car():    def __init__(self,*args,**kwargs):        p…
一.    引言 凡是面向对象设计的语言,在类实例化时都有构造方法,很多语言的构造方法名与类名一致,Python中类的构造方法比较特殊,必须是__init__特殊方法. 二.    语法释义 1.    语法:__init__(self,*args,**kwargs) 其中: 1)    self为创建的实例,由Python自动传入. 各位看官注意: 1>关于self在此不进行详细介绍,如果需要了解请参考本博<第7.5节 揭开Python类中self的面纱>.这里self表示实例自身,从…