如何将值传递给 Python 中的类变量?

月亮

考虑下面的类:

class cell:
    X_size = 10
    Y_size = 10
    world = np.zeros((X_size,Y_size))

我想将上面的类更改为下面的代码并能够传递X_size, Y_size给一个实例:

class cell:
    world = np.zeros((X_size,Y_size))#X_size and Y_size must be passed on the run time

我可以做:

class cell:
    def __init__(self, X_size,Y_size):
       self.X_size = X_size
       self.Y_size = Y_size
       world = np.zeros((X_size,Y_size))

问题是每个实例都会生成一个新的world. 我希望world创建一次,所有实例都可以看到,然后每个新实例只修改世界中的一个元素,所有其他实例也可以看到这些元素。这就是为什么我使用的类变量,但当时如果我使用类变量,看来我必须确定X_sizeY_size前手。

杰克史密斯

要将参数传递给类声明,必须使用__init_subclass__(参见此处)或元类声明超类。

__init_subclass__ 是实现您所描述的最直接的方法:

class BaseCell:
    def __init_subclass__(cls, *, X_size, Y_size):
        cls.world = np.zeros((X_size, Y_size))

这可以让你的尺寸参数传递给子类BaseCell,就像这样:

class MyCell(BaseCell, X_size=10, Y_size=10):
    pass

cells = [MyCell(), MyCell()]

assert cells[0].world is cells[1].world
assert len(cells[0].world) == 10
assert len(cells[0].world[0]) == 10

然后所有的实例MyCell将共享一个world类属性,宽度为 10,高度为 10。

注意:根据您尝试实现的更广泛的上下文,可能只是将 传递world给每个实例构造函数可能是更合适的方法(请参阅依赖倒置)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将变量传递给python中的类

Python:如何将值传递给作为函数的变量?

如何将字典值传递给不同python类中的算术函数

如何将参数传递给python中的嵌套类

如何将参数传递给python中的类

如何将变量传递给python中的sql查询?

如何将python flask中的变量传递给mysqldb?

如何将url中的变量传递给python flask

如何将变量传递给 Python 中的 bash 命令

如何将javascript异步函数的返回值传递给python变量

Python:如何将键从函数的变量传递给字典?

我如何将 python 变量传递给 shell 命令

如何将python变量传递给bash脚本?

python-如何将变量传递给JSON?

如何将python变量传递给sparql查询?

如何将变量的值从 Java 类传递给 JSP?

如何将参数传递给python中的函数

如何将参数传递给 Python 中的线程函数

如何将参数传递给python grequests中的钩子

如何将星号传递给python中的模块“ sh”?

当只有一些变量需要多个变量时,如何将多个值传递给函数-Python 3

如何将 R 变量传递给 Pycharm 中的 Python 变量?

如何将变量中的值传递给React组件

如何将ctypes C代码中的变量(快速更新)传递给Python?通过参考?

如何将 MEL 变量中的换行符传递给 Python

如何将父变量传递给python中的子进程?

如何将Python变量传递给管道中的下游作业

如何在python中定义空变量或将值从函数传递给全局变量?

如何使用exec()将值传递给python函数中的变量?