python重载构造函数 python重写构造方法

python关于class问题 小白求解答

Python编程中类的概念可以比作是某种类型集合的描述,如“人类”可以被看作一个类,然后用人类这个类定义出每个具体的人——你、我、他等作为其对象。类还拥有属性和功能,属性即类本身的一些特性,如人类有名字、身高和体重等属性,而具体值则会根据每个人的不同;功能则是类所能实现的行为,如人类拥有吃饭、走路和睡觉等功能。具体的形式如下:

绥江网站建设公司创新互联,绥江网站设计制作,有大型网站制作公司丰富经验。已为绥江上千提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的绥江做网站的公司定做!

# 例:类的概念 

class 人类: 

名字 = '未命名' # 成员变量 

def 说话(内容): # 成员函数 

print 内容 # 成员变量赋初始值 

某人 = 人类() # 定义一个人类对象某人 

某人.名字 = "路人甲" 

某人.说话 ('大家好') # 路人甲说话 

大家好! # 输出

Python中定义和使用类的形式为:class 类名[(父类名)]:[成员函数及成员变量],类名为这个类的名称,而父类名为可选,但定义父类名后,子类则拥有父类的相应属性和方法。在用类定义成对象时,会先调用__init__构造函数,以初始化对象的各属性,类的各属性(成员变量)均可以在构造函数中定义,定义时只要加上对象指针就好了。而在对象销毁时,则会调用__del__析构函数,定义类的成员函数时,必须默认一个变量(类似于C++中的this指针)代表类定义的对象本身,这个变量的名称可自行定义,下面例子将使用  self变量表示类对象变量  。

# 例:类定义及使用 

class CAnimal: 

name = 'unname' # 成员变量 

def __init__(self,voice='hello'): # 重载构造函数 

self.voice = voice # 创建成员变量并赋初始值 

def __del__(self): # 重载析构函数 

pass # 空操作 

def Say(self): 

print self.voice 

t = CAnimal() # 定义动物对象t 

t.Say() # t说话 

hello # 输出 

dog = CAnimal('wow') # 定义动物对象dog 

dog.Say() # dog说话 

wow # 输出

python 什么时候用类方法

用class来声明一个类,也就是创建了一个类。使用class关键字,后面接类的名称,然后一个冒号

还有两种写法,他们都是等价的。

声明类以后,我们使用__init__函数来重载构造函数,如图所示,在类中都有一个self参数,他是任何类都有的,代表实例本身,假如我们想要给实例设置一个name属性,那么我们用下面的方法来设置。__init__后面的参数都可以在创建实例的时候使用。

当然我们可以任意设置__init__方法的参数个数

通常我们使用__del__函数来重载析构函数,不过如果你没有在类的声明中写这个方法,它也会默认加上去的。所以,通常都不写。。。

你还可以在类中声明一个方法,然后在创建实例以后,我们再调用方法。声明方法如下:

创建实例

创建实例我们用赋值的方式,我们可以直接将参数输入到类中。然后用p.name来调用类的属性。

python有函数重载吗?

python中没有函数重载。

为了考虑为什么python不提供函数重载,首先我们要研究为什么需要提供函数重载。

函数重载主要是为了解决两个问题:

可变参数类型。

可变参数个数。

另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。

那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?

答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。

那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?

答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。

更多Python知识请关注Python自学网


文章名称:python重载构造函数 python重写构造方法
文章分享:http://myzitong.com/article/doipgis.html