首页 > 解决方案 > 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

这可以在不对类名进行硬编码的情况下实现吗?

标签: python

解决方案


您可以使用self.__class__属性执行此操作

>>> class A:
...     def f(self):
...         print(self.__class__)
...
>>> A().f()
<class '__main__.A'>

推荐阅读