关于循环引用的问题
本帖最后由 batu1579 于 2022-11-15 13:49 编辑我分别定义了两个类:
- 可以被吃的
- 可以吃东西的
可以被吃的应该只能被可以吃东西的示例吃,而同样的可以吃东西的应该只能吃可以被吃的东西
按照上面的描述写出来的代码如下:
```python
from abc import ABCMeta, abstractmethod
class CanBeEat(metaclass=ABCMeta):
@abstractmethod
def be_eaten(self, by: CanEat) -> None: pass
class CanEat(metaclass=ABCMeta):
@abstractmethod
def eat(self, target: CanBeEat) -> None: pass
```
但是实际运行的时候会出现被吃类中的参数(可以吃东西的)类型未定义,大大们有没有好的办法解决哇 class CanEat:
pass
提前声明一下,没用过python的类,但是我这么试了之后不报错了,运行正不正确我不知道 Tao2817 发表于 2022-11-14 18:48
提前声明一下,没用过python的类,但是 ...
可是大大我希望这两个是接口,那两个方法是抽象方法哇 本帖最后由 Tao2817 于 2022-11-15 13:10 编辑
batu1579 发表于 2022-11-15 08:57
可是大大我希望这两个是接口,那两个方法是抽象方法哇
额我可能表述有问题。我是说把CanEat在最前面提前声明一下,完整代码:
from abc import ABCMeta, abstractmethod
class CanEat:
pass
class CanBeEat(metaclass=ABCMeta):
@abstractmethod
def be_eaten(self, by: CanEat) -> None: pass
class CanEat(metaclass=ABCMeta):
@abstractmethod
def eat(self, target: CanBeEat) -> None: pass
class dog(CanEat):
def eat(self, target: CanBeEat):
print(f"dog eat {target}")
class meat(CanBeEat):
def be_eaten(self, by: CanEat):
print(f"meat is eaten by {by}")
d = dog()
m = meat()
d.eat(m) 哦哦好的谢谢大大 orz
页:
[1]