python - Python - 是否可以在不硬编码类名的情况下从实例方法更新类变量?
问题描述
可以使用以下符号从同一类的实例方法中将值分配给类变量 -
[class name].[class variable name] = [value]
例如 -
In [104]: class MyClass:
...: """A simple example class"""
...: i = 12345
...:
...: def f(self):
...: MyClass.i = 5
...: return 'hello world'
In [105]: MyClass.i
Out[105]: 12345
In [106]: MyClass().f()
Out[106]: 'hello world'
In [107]: MyClass.i
Out[107]: 5
这可以在不对类名进行硬编码的情况下实现吗?
解决方案
您可以使用self.__class__
属性执行此操作
>>> class A:
... def f(self):
... print(self.__class__)
...
>>> A().f()
<class '__main__.A'>
推荐阅读
- java - 谷歌浏览器忽略功能
- vba - 本月调整代码
- imagemagick - imagemagick 将带有文本(无扫描)的 pdf 转换为乱码
- sql - 在分组依据之前将行值存储为新列
- java - OpenCV java CascadeClassifier异常
- javascript - 通过自定义协议处理程序(Chrome 到 IE)使用 URL 传递参数
- c++ - 返回 std::tuple 并移动语义/复制省略
- jquery - jQuery selectpicker - 如何选择空选项?
- ios - 将 UIStackView 动态调整为内部 UIView 的宽度
- r - R Plotly 使用范围选择器按钮选择范围