小编Jay*_*ari的帖子

Python:抽象实例变量?

有没有办法在python中为类声明抽象实例变量?

例如,我们有一个抽象基类,Bird带有fly使用abc包实现的抽象方法,以及feathers作为属性实现的抽象实例变量(我正在寻找的)。

from abc import ABCMeta, abstractmethod

class Bird(metaclass=ABCMeta):

    @property
    @abstractmethod
    def feathers(self):
        """The bird's feathers."""

    @abstractmethod
    def fly(self):
        """Take flight."""
Run Code Online (Sandbox Code Playgroud)

问题是,Eagle从 派生的类Bird需要feathers实现为属性方法。所以以下不是一个可以接受的类,但我希望它是

class Eagle(Bird):

    def __init__(self):
        self.feathers = 'quill'

    def fly(self):
        print('boy are my arms tired')
Run Code Online (Sandbox Code Playgroud)

可能存在问题,因为需求是在实例本身上,并且确实在实例化之后,所以我不知道像abc包这样的东西是否仍然有效。

有没有一些标准的方法来处理这个问题?

python abstract-class instance-variables python-3.6

11
推荐指数
2
解决办法
4116
查看次数

带有"常规"异常消息的条件`try`语句

try如果条件为真,我想加载文件.如果发生文件异常或条件为假,我想要执行第二行(一行)代码.

为了涉及鸟类,请考虑以下代码:

if try_to_fly:
    try:
        fly()
    except FlyError:
        walk("I'm walking instead of flying.")
else:
    walk("I'm walking stead of flying.")

# more lines below #
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的.但是,它有walk("I'm walking stead of flying.")两次,这是很好的避免.

此外,还有更多的代码要做到这一点,因此我们不能return在没有考虑该代码的情况下使用try语句.

是否有更多的pythonic方式来做到这一点?

python if-statement try-except python-3.6

2
推荐指数
1
解决办法
130
查看次数