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__()

 

posted @ 2017-05-24 10:14  尼姑哪里跑  阅读(209)  评论(0编辑  收藏  举报