簡體   English   中英

python中的抽象方法

[英]Abstract method in python

import abc

class SetterGetter(object):
    __metaclass__ = abc.ABCMeta

    @abc.abstractmethod
    def set_val(self, inp):
        return

    @abc.abstractmethod
    def get_val(self):
        return

class TryAbsMethod(SetterGetter):
    def get_val(self):
        return self.inp

    def set_valz(self, inp):
        self.inp = inp

a = TryAbsMethod()
print(a)

根據教程,我期望從上面的代碼中得到好處,但是我卻從python得到了輸出,這很奇怪,有人可以解釋一下為什么嗎?

輸出得到

/usr/bin/python3.4 /home/murtuza/MyCodes/abstract.py
<__main__.TryAbsMethod object at 0x7f93ba8ab048>

Process finished with exit code 0

預期的異常

TypeError: Can't instantiate abstract class TryAbsMethod with abstract method set_val

您正在使用Python3.x。 在Python 3.x中,元類聲明語法已更改。

class SetterGetter(object, metaclass=abc.ABCMeta):  # <---
    @abc.abstractmethod
    def set_val(self, inp):
        return

    @abc.abstractmethod
    def get_val(self):
        return

請參閱自定義類的創建-數據模型 -Python 3.x文檔PEP3115-Python 3中的元類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM