我希望代码可以执行类似这样的操作
bundle-version="0.0.0"
现在最后的方法不起作用,因为我不知道如何访问self和cls。我该如何实现呢?
答案 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
。