python成员函数重载 python函数重载机制( 二 )


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=https://www.04ip.com/post/%s' % (key, value)
zoo = Zoo()
zoo['a'] = 'a'
zoo['b'] = 'b'
zoo['c'] = 'c'
打?。?
key=a,value=https://www.04ip.com/post/a
key=b,value=https://www.04ip.com/post/b
key=c,value=https://www.04ip.com/post/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']
python 重载方法有哪些特点说起python重载 , 大家学过其他的语言比如说C#语言的话,应该知道有方法重载和运算符重载的概念,但是python重载的话 , 有它自己的特殊性,下面我说说自己的一点看法,希望大家踊跃拍砖 。python 的重载主要包括方法重载和运算符重载 。1.python 方法重载: 其他的语言一般对于方法重载的话 , 主要是根据参数的类型不同或者是数量不同来区分同名的方法 。而python则比较特殊,它本身是动态语言,方法的参数是没有类型的,当调用传值的时候才确定参数的类型 , 故对参数类型不同的方法无需考虑重载 。对参数数量不同的方法,则(大多数情况下)可以采用参数默认值来实现 。比如你可以定义函数的默认值:def info(x,y,z=1): pass2.python 运算符重载: 在C#中,我们通过使用关键字operator定义一个运算符方法,并定义与所在类相关的运算符行为 。在 Python中,运算符重载的方式更为简单——每一个类都默认内置了所有可能的运算符方法,只要重写这个方法 , 就可以实现针对该运算符的重载 。例如以下是重载加法操作:class Info(object): def __init__(self): self.a = 11 self.b = 22 def __add__(self,x): return self.a * self.b上面的例子是重写了+操作符号,你也可以重载其他的运算符 。比如你可以重载乘号运算符 , 感兴趣的话,可以自己写写代码 。希望上面讲的2点能够让你对python重载有个简单的认识 。有兴趣的可以关注下 。
简述python面向对象编程中函数重载和重写的区别这个基本是没有一点关联 。。。只是名字容易混淆而已 重写就是对父类的方法重写,改变方法体中的语句 。。。。重载就是同一个函数名,参数个数、类型、排列顺序不同,jvm根据参数来决定调用哪一个方法
怎么理解Python中重载?通俗理解是python里面没有重载吧?
正常的重载说的应该是函数方法的重载,即两个函数的名称相同但是参数不同是重载 , 会出现重载的情况一般是函数实现相同功能时,遇到参数类型可能不同的情况,会出现重载,如比较常见的对于加法的实现 , 如果输入两个整数相加则直接使用整数加法,如果两个字符串相加则使用字符串的拼接 。输入的参数类型不同,其实是两个不同的函数,这在那种强类型语言中是可以利用函数重载来实现的,而python中函数类型是动态的各种各样的,所以不需要重载这个机制 。相同函数名就是表示同一个方法 。
关于python的重载问题没有重载,但是可以有默认参数和不定长参数,可以判断默认值和参数长度来处理 。
比如:
def range(start, end = -1):
if end == -1:
end = start

推荐阅读