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:允許使用多重繼承的設計