python学习笔记(五)
面向对象方法
元组的二义性:不明确参数代表的含义
circle=(2,4,6) def distance_from_origin(x,y): return "返回x,y坐标" def edge_distance_from_origin(x,y,radio): return "返回 x,y,radio" >>> distance_from_origin(*circle[:2]) '返回x,y坐标' >>> edge_distance_from_orgin(*circle) '返回 x,y,radio'
通过使用指定的元组,解决货值元组顺序的问题以及使用元组拆分的问题
>>> Person=collections.namedtuple("Person",'name age sex')
>>> p=Person("tsui",18,'man')
>>> p
Person(name='tsui', age=18, sex='man')
附加方法的实现(应避免使用两个_来头来命名方法)
+ -->__add__()
len -->__len__()
- -->__sub__()
python中的类从object衍生而来
子类中任何方法都可能被重写
使用super()调用父类方法
自定义类
语法:
class className:
suite
class className(base_classes):
suite
pass 代表空语句,什么也不做
属性和方法
Person类
class Person:
def __init__(self, name="",age=0,sex="man"):
self.name = name
self.age=age
self.sex=sex
def __eq__(self,other):
return self.name==other.name and self.age==other.age and self.sex==other.sex
def __str__(self):
return "{0.x!r},{0.y!r}".format(self)
def Speak(self):
print("{0.name} say i'm {0.age} ".fromat(self))
import Animal
a=Animal.Person(name="hiuyeung",age=18,sex="man")
if a.name=="hiuyeung":
print(" good guy !")
else:
print(" bad guy !")
在对方法进行调用时,python会自动提供一个参数,对对象本身的引用self,所有对象属性都必须由self进行限定。
对象创建过程
1,调用__new__(),(自身的或者父类的)
2,调用__init__()
浙公网安备 33010602011771号