Python基礎知識(18):面向對象高級編程 使用__slots__:限制實例的屬性,只允許實例對類添加某些屬性 (1)實例可以隨意添加屬性 (2)某個實例綁定的方法對另一個實例不起作用 (3)給類綁定方法市所有類都綁定了該方法,且所有實例都可以調用該方法 用__slots__定義屬性反對這個類的 ...
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:允許使用多重繼承的設計