问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python 有没有方法的重载

发布网友 发布时间:2022-04-27 13:24

我来回答

3个回答

懂视网 时间:2022-04-18 07:25

在python中,具有重载的思想却没有重载的概念。所以有的人说python这么语言并不支持函数重载,有的人说python具有重载功能。实际上python编程中具有重载的目的缺无重载的行为,或者说是python并不需要重载!

python是一门动态语言,不需要声明变量类型,函数中可以接受任何类型的参数也就无法根据参数类型来支持重载,python没有必要去考虑参数的类型问题,这些都可以在函数内部判断处理,并无必要去在写一个函数。python 有多种传参方式,默认参数/可变参数/可变关键字参数可以处理函数参数中参数可变的问题。

python3.4中增加的重载机制

在python3.4中提供有一个转发机制来实现重载

from functools import singledispatch 
@singledispatch 
def function(obj): 
 print('%r'%(obj))
 
@function.register(int) 
def function_int(obj): 
 print('Integer: %d'%(obj)) 
 
@function.register(str) 
def function_int(obj): 
 print('String: %s'%(obj)) 
 
@function.register(list) 
def function_list(obj): 
 print('List: %r'%(obj)) 
 
 
if __name__ == "__main__": 
 function(1) 
 function('hello') 
 function(range(3)) 
 function(object)

热心网友 时间:2022-04-18 04:33

Python 类可以定义专用方法,专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样)。
.1 __init__
类似于构造函数
#!/usr/local/bin/python
class Study:
def __init__(self,name=None):
self.name = name
def say(self):
print self.name
study = Study("Badboy")
study.say()

.2 __del__
类似于析构函数
#!/usr/local/bin/python
class Study:
def __init__(self,name=None):
self.name = name
def __del__(self):
print "Iamaway,baby!"
def say(self):
print self.name
study = Study("zhuzhengjun")
study.say()

.3__repr__
使用repr(obj)的时候,会自动调用__repr__函数,该函数返回对象字符串表达式,
用于重建对象,如果eval(repr(obj))会得到一个对象的拷贝。
#!/usr/local/bin/python
class Study:
def __init__(self,name=None):
self.name = name
def __del__(self):
print "Iamaway,baby!"
def say(self):
print self.name
def __repr__(self):
return "Study('jacky')"
study = Study("zhuzhengjun")
study.say()
print type(repr(Study("zhuzhengjun"))) # str
print type(eval(repr(Study("zhuzhengjun")))) # instance

study = eval(repr(Study("zhuzhengjun")))

study.say()

.4__str__
Python能用print语句输出内建数据类型。有时,程序员希望定义一个类,要求它的对象也能用print语句输出。Python类可定义特殊方法__str__,为类的对象提供一个不正式的字符串表示。如果类的客户程序包含以下语句:

print objectOfClass
那么Python会调用对象的__str__方法,并输出那个方法所返回的字符串。

#!/usr/local/bin/python

class PhoneNumber:
def __init__(self,number):
self.areaCode=number[1:4]
self.exchange=number[6:9]
self.line=number[10:14]

def __str__(self):
return "(%s) %s-%s"%(self.areaCode,self.exchange,self.line)

def test():
newNumber=raw_input("Enter phone number in the form. (123) 456-7890: \n")
phone=PhoneNumber(newNumber)
print "The phone number is:"
print phone

if__name__=="__main__":
test()

方法__init__接收一个形如"(xxx) xxx-xxxx"的字符串。字符串中的每个x都是电话号码的一个位数。方法对字符串进行分解,并将电话号码的不同部分作为属性存储。

方法__str__是一个特殊方法,它构造并返回PhoneNumber类的一个对象的字符串表示。解析器一旦遇到如下语句:
print phone

就会执行以下语句:

print phone.__str__()

程序如果将PhoneNumber对象传给内建函数str(如str(phone)),或者为PhoneNumber对象使用字符串格式化运算符%(例如"%s"%phone),Python也会调用__str__方法。

.5__cmp __
比较运算符,0:等于 1:大于 -1:小于
class Study:
def __cmp__(self, other):
if other > 0 :
return 1
elif other < 0:
return - 1
else:
return 0

study = Study()
if study > -10:print 'ok1'
if study < -10:print 'ok2'
if study == 0:print 'ok3'

打印:ok2 ok3
说明:在对类进行比较时,python自动调用__cmp__方法,如-10 < 0 返回 -1,也就是说study 应该小与 -10,估打印ok2

.6__getitem__
__getitem__ 专用方法很简单。象普通的方法 clear,keys 和 values 一样,它只是重定向到字典,返回字典的值。
class Zoo:
def __getitem__(self, key):
if key == 'dog':return 'dog'
elif key == 'pig':return 'pig'
elif key == 'wolf':return 'wolf'
else:return 'unknown'

zoo = Zoo()
print zoo['dog']
print zoo['pig']
print zoo['wolf']

打印 dog pig wolf

.7__setitem__
__setitem__ 简单地重定向到真正的字典 self.data ,让它来进行工作。
class Zoo:
def __setitem__(self, key, value):
print 'key=%s,value=%s' % (key, value)

zoo = Zoo()
zoo['a'] = 'a'
zoo['b'] = 'b'
zoo['c'] = 'c'
打印:
key=a,value=a
key=b,value=b
key=c,value=c

.8 __delitem__
__delitem__ 在调用 del instance[key] 时调用 ,你可能记得它作为从字典中删除单个元素的方法。当你在类实例中使用 del 时,Python 替你调用 __delitem__ 专用方法。
class A:
def __delitem__(self, key):
print 'delete item:%s' %key

a = A()
del a['key']

热心网友 时间:2022-04-18 05:51

魔法函数............
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
微信限额20万怎样提到30万 微信怎么提升限额 微信限制额度二十万了怎么办 爱奇艺电视版会员电影没声音 爱奇艺怎么没声音了 爱奇艺万能播放器怎么没声音-爱奇艺播放器没声音修复方法 爱奇艺播放没有声音了怎么回事 主持人刘炽朗诵《采桑子·重阳》 卧室空间大了摆放什么风水好 卧室空间大了摆放什么 中国平安金融集团上海分公司这公司是一家怎样的公司?是骗子吗? 怎么理解Python中重载?通俗理解是 python,如何使用自定义函数来写进另一个文件 python自定义函数中如何使他自身重新运行,有没有这样的代码? python Ctypes 重写C接口的问题 OPPOA9手机显示PCAM10登录过的设备,用vivo手机怎么登录PCAM10 python怎么给导入模块的类重写其中部分类方法啊? 为什么 Python 不支持函数重载 python 重载方法有哪些特点 python中重写==的s方法 在Python中为什么重写__new__方法时,不需要声明它是静态方法? python 重载和重写的区别 简述python面向对象编程中函数重载和重写的区别 python类方法重写 老人说有些人不能吃狗肉的吃了会破相这是真的吗,会不会跟八字有关系的 什么样的人不能吃狗肉? 狗肉有什么病的人不能吃? word怎样把一句话的每一个字分别填充到表格里? 狗肉不能与绿豆一起吃么? 吃狗肉会中毒吗? 狗肉能和牛肉一起吃吗 丝瓜的效用 爸爸欠贷款要子女还吗 法律上有规定父亲欠款儿子还的吗?法律上是怎么规定的 父亲欠的贷款还不上,儿子有还款责任吗 父母借贷款没还上要子女承担吗 父母银行贷款,没有能力偿还,子女有义务偿还吗 父母贷款没还清子女就要还吗 父亲贷款没还子女需要承担责任吗 父母贷款没还清子女就要还吗? 狗狗吃什么东西可以下奶 狗狗发奶吃什么好 狗吃什么能催奶 狗狗如何下奶最快最有效? 狗下崽后需要喂什么催奶 狗狗下奶了什么时候生? 母狗生了小狗狗后几天下奶了? 物流公司主要做什么? 请问物流公司主要做些什么事?(我需要通俗一点的回答,谢谢) 物流企业是做什么的 仓储物流公司主要做什么?