元組的二義性:不明確參數表明的含義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'
經過使用指定的元組,解決貨值元組順序的問題以及使用元組拆分的問題ui
>>> Person=collections.namedtuple("Person",'name age sex') >>> p=Person("tsui",18,'man') >>> p Person(name='tsui', age=18, sex='man')
附加方法的實現(應避免使用兩個_來頭來命名方法)orm
+ -->__add__()對象
len -->__len__()blog
- -->__sub__()ci
python中的類從object衍生而來it
子類中任何方法均可能被重寫io
使用super()調用父類方法form
語法:class
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__()