gpt4 book ai didi

python - 抽象基类中的断言?

转载 作者:太空宇宙 更新时间:2023-11-04 09:28:21 25 4
gpt4 key购买 nike

本质上我想要的是要求抽象基类的子类不仅实现某些属性或方法,而且还可以对它们提出要求,例如数据类型或允许的值。

例如,假设我想要要求具有 namename 以字母“a”开头的类:

from abc import ABC, abstractproperty

class Base(ABC):
@abstractproperty
def name(self):
assert self.name[0] == 'a' # or similar; help needed here

class Derived1(Base):
name = 'albert' # I want this class definition to work

class Derived2(Base):
name = 'john' # I want this class definition to fail the 'a' assertion

我将在基类中的何处/如何断言它?

最佳答案

使用 __init_subclass__ 对类属性实现限制。

class Base:
def __init_subclass__(cls):
try:
name = cls.name
except AttributeError:
raise ValueError("No name attribute")

if name[0] != "a":
raise ValueError("first letter of name is not 'a'")


class Derived1(Base):
name = 'albert' # OK

class Derived2(Base):
name = 'john' # Fails due to first letter 'j'

# Fails because Derived3.name is never defined
class Derived3(Base):
pass

关于python - 抽象基类中的断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56691853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com