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