python - 如何从 __init__ 访问 __init_subclass__ 中的变量?
问题描述
这是示例代码:
from abc import *
class weightlayer(metaclass=ABCMeta):
def __init_subclass__(cls):
cls.count = 0
def __init__(self):
self.order = cls.count
cls.count += 1
@abstractmethod
def init_weight(self):
pass
class A_layer(weightlayer):
def init_weight(self):
pass
class B_layer(weightlayer):
def init_weight(self):
pass
我已经搜索了很多次,但我找不到解决方案。我的想法不起作用,因为__ init __
函数没有cls
参数。我应该怎么办?
解决方案
__init__
是一个实例方法,所以你必须通过实例到达实际的类self
:
def __init__(self):
self.order = self.__class__.count
self.__class__.count += 1
a1 = A_layer()
A_layer.count
# 1
a1.order
# 0
a2 = A_layer()
A_layer.count
# 2
a2.order
# 1
B_layer.count
# 0
推荐阅读
- linux - 当我在远程服务器上运行脚本时,它会在本地机器上启动
- php - 规则错误?只有列表中的第一项用于生成事件
- symfony - 如何在 Symfony 安全上正确设置两种类型的用户和防火墙?
- android - Seekbar Thumb 问题上的动态文本
- python - 需要将 dic 分配给 Pandas Dataframe
- algorithm - 扫描矩阵的元素
- java - 本地主机上的 Spring Boot 下载速度测试非常慢
- c# - Monogame 3.6 共享项目智能感知在 Monodevelop 7.5 中不起作用
- json - 无法将字符串映射转换为 json
- ruby-on-rails - 是什么导致了 Less::Error 'Unrecognized input'?