如何在方法中访问cls和self

时间:2017-01-24 15:39:21

标签: python

我希望代码可以执行类似这样的操作

bundle-version="0.0.0"

现在最后的方法不起作用,因为我不知道如何访问self和cls。我该如何实现呢?

2 个答案:

答案 0 :(得分:4)

作为非常简要回顾,var fileName = "https://something.something.something/something/filename.abc". Split('/').Last(); 引用该类的当前实例,而self变量附加到类自身,即在每个实例之间共享。以下是一些有关此问题的参考资料,以及我如何找到您的解决方案:

我修改了您的示例代码以说明差异并包含一个解决方案:

cls

class MyClass: __var2 = 'var2' var3 = 'var3' def __init__(self): self.__var1 = 'var1' def normal_method(self): print self.__var1 @classmethod def class_method(cls): print cls.__var2 def my_method(self): print self.__var1 print self.__var2 print self.__class__.__var2 if __name__ == '__main__': print MyClass.__dict__['var3'] clzz = MyClass() clzz.my_method() __var2是保存在班级中的变量。您可以通过代表名称空间的var3访问任何没有实例的类变量。

由于类变量成为每个实例的一部分,因此您只需调用__dict__即可访问它们。或者,您可以显式调用self以明确实际存储预期变量的位置。

答案 1 :(得分:1)

您可以self.__var2 - 在实例中找不到的任何属性都会在课程中自动查找。

要明确表示您希望该属性来自班级本身,请使用self.__class__.__var2