1. 程式人生 > >Python之高階程式設計

Python之高階程式設計

1、給class繫結屬性:方便所有物件使用
2、使用__slote__變數:限制繫結屬性
__slots__ = ('name', 'age') - 用tuple定義允許繫結的屬性名稱
子類例項允許定義的屬性就是自身的__slots__加上父類的__slots__
3、@property

class Student(object):

    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self, value):
        self._birth = value

    @property
def age(self): return 2015 - self._birth

4、__str__

class Student(object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return 'Student object (name=%s)' % self.name
    __repr__ = __str__

s = Student(“Liuos”)
輸出結果:Student object (name=Liuos)
5、__iter__


如果一個類想被用於for … in迴圈,類似list或tuple那樣,就必須實現一個iter()方法,該方法返回一個迭代物件

class Fib(object):
    def __init__(self):
        self.a, self.b = 0, 1 # 初始化兩個計數器a,b

    def __iter__(self):
        return self # 例項本身就是迭代物件,故返回自己

    def __next__(self):
        self.a, self.b = self.b, self.a + self.b # 計算下一個值
if self.a > 100000: # 退出迴圈的條件 raise StopIteration() return self.a # 返回下一個值

6、__getitem__

class Fib(object):
    def __getitem__(self, n):
        a, b = 1, 1
        for x in range(n):
            a, b = b, a + b
        return a