重载类的特殊方法
2016-06-18 22:02
141 查看
1.在Python中,类中有一些以两条下划线开始并且以两条下划线结束的方法,称之为为的专有方法,专有方法时针对类的特殊操作的一些方法,
代码示例如下:
class Book:
def __init__(self,name="Python从入门到精通"):
self.name=name
def __add__(self, other):
return self.name+" "+other.name
def __len__(self):
return len(self.name)
if __name__=="__main__":
booka=Book()
bookb=Book("Java从入门到精通")
print("len(booka):",len(booka))
print("len(bookb):",len(bookb))
print(booka+bookb)
2.鸭子类型 与多态
class Duck:
def __init__(self,name="duck"):
self.name=name
def quack(self):
print("嘎嘎嘎")
class Cat:
def __init__(self,name="cat"):
self.name=name
def quack(self):
print("喵喵喵...")
class Tree:
def __init__(self,name="tree"):
self.name=name
def duck_demo(obj):
obj.quack()
if __name__=="__main__":
duck=Duck()
cat=Cat()
tree=Tree()
duck_demo(duck)
duck_demo(cat)
duck_demo(tree)
代码示例如下:
class Book:
def __init__(self,name="Python从入门到精通"):
self.name=name
def __add__(self, other):
return self.name+" "+other.name
def __len__(self):
return len(self.name)
if __name__=="__main__":
booka=Book()
bookb=Book("Java从入门到精通")
print("len(booka):",len(booka))
print("len(bookb):",len(bookb))
print(booka+bookb)
2.鸭子类型 与多态
class Duck:
def __init__(self,name="duck"):
self.name=name
def quack(self):
print("嘎嘎嘎")
class Cat:
def __init__(self,name="cat"):
self.name=name
def quack(self):
print("喵喵喵...")
class Tree:
def __init__(self,name="tree"):
self.name=name
def duck_demo(obj):
obj.quack()
if __name__=="__main__":
duck=Duck()
cat=Cat()
tree=Tree()
duck_demo(duck)
duck_demo(cat)
duck_demo(tree)
相关文章推荐
- Java - PAT - 1002. 写出这个数 (20)
- 对面向对象的理解及应该了解的问题
- android5.0StateListAnimator
- linux下的文件系统
- 九度OJ 1031
- 信道容量
- 自定义控件起步(二)(自定义属性)
- TP框架基础2
- [bzoj2638] 黑白染色
- 上下左右滑动测试
- 采用Atlas+Keepalived实现MySQL读写分离、读负载均衡
- [置顶] 【一些网站的收集】包含机器学习深度学习大牛主页等
- 网页源码查看器
- Deep Learning(深度学习)学习笔记整理系列之(八)
- ListView优化机制及滑动时数据时出现的数据错乱重复问题
- 20145211 《Java程序设计》课程总结——桃花流水窅然去
- Matlab编程笔记之GUI程序转exe
- 使用Map集合求出一个字符窜中各个字符的个数
- php魔术方法
- Deep Learning(深度学习)学习笔记整理系列之(七)