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...