Python學習之旅(十九)

finsom發表於2018-11-30

Python基礎知識(18):物件導向高階程式設計(Ⅰ)

使用__slots__:限制例項的屬性,只允許例項對類新增某些屬性

(1)例項可以隨意新增屬性

(2)某個例項繫結的方法對另一個例項不起作用

(3)給類繫結方法市所有類都繫結了該方法,且所有例項都可以呼叫該方法

用__slots__定義屬性反對這個類的例項起作用,但對這個類的子類是不起作用的

>>> class Student(object):
    __slots__=("name","age")

    
>>> s=Student()
>>> s.name="Jack"
>>> s.score=90
Traceback (most recent call last):
  File "<pyshell#43>", line 1, in <module>
    s.score=90
AttributeError: `Student` object has no attribute `score`

 

使用@property:把方法變成屬性來呼叫

@property是Python內建的裝飾器

>>> class Student(object):
    @property
    def test(self):
        return self.name
    @test.setter
    def test(self,name):
        self.name=name

        
>>> s=Student()
>>> s.test="Alice"
>>> print(s.test)
Alice

 

多重繼承

通過多重繼承,子類可以同時獲得多個父類的所有功能

>>> class Run(object):
    def run():
        print("I can run.")

        
>>> class Fly(object):
    def fly():
        print("I can fly.")

        
>>> class Swim(object):
    def swim():
        print("I can swim.")

        
>>> class Duck(Run,Fly,Swim):
    pass

 

Mixln:允許使用多重繼承的設計

相關文章