物件導向高階特性之 抽象基類

2021-10-02 02:50:10 字數 728 閱讀 6855

import abc

class

human

(metaclass=abc.abcmeta)

:"""基類,定義乙個抽象類"""

@abc.abstractmethod

defintroduce

(self)

:print

('introduce....'

) @abc.abstractmethod

defhello

(self)

:print

('hello'

)class

person

(human)

:#繼承於抽象類human的子類,必須具有抽象基類human的所有方法

defintroduce

(self)

:print

('person...'

)def

hello

(self)

:print

('person hello'

)#抽象類無法例項化

#h=human()會報錯,因為human是抽象類,無法例項化

p=person(

)p.introduce(

)p.hello(

)

結果

person...

person hello

物件導向高階特性之 slots

動態語言 可以在執行的過程中,修改 靜態語言 編譯時已經確定好 執行過程中不能修改 python允許在定義class的時候,定義乙個特殊的 slots 變數,來限制該class例項能新增的屬性 使用 slots 時注意 slots 定義的屬性僅對當前類例項起作用,對繼承的子類是不起作用的 impor...

物件導向高階特性 元類type

1 通過分支語句動態建立類 因為類也是物件,執行時在函式中使用class關鍵字動態的建立類。當使用class關鍵字時,python直譯器自動建立這個物件。通過分支語句動態建立類 defcreate class name if name foo class foo object pass return...

PHP物件導向高階特性

1 在 任何處直接使用,不需要在物件中傳遞例項 2 每個例項都可以訪問類中的靜態屬性。不用為了獲取簡單的功能而例項化物件 3 在靜態方法中例項物件進行操作,那麼在不例項化的情況下獲取新的物件 4 靜態變數可以通過類修改,但常量不可改 類的屬性改變會影響它所有的例項 class parents a n...