嗯,我最近开始学习 Python,但我发现,由于这门语言的工作原理,我可以做一些我不知道它会产生什么样后果的事情。
这是一个例子:
class crazyClass:
def __init__(self):
self.name = "Crazy Class" # Irrelevant, just to have something
def madnessUnleashed(self):
print("WAJALAKAMAKACHAKA!")
# Now I want to use madnessUnleashed
# But I don't want to instantiate any object.
crazyClass.madnessUnleashed(crazyClass()) # Damn, I'm instantiating an object, but is it temporary or what?
我不确定这是否可以仅仅作为好奇,或者这是否有用,或者这是否会导致内存泄漏......
任何答案将不胜感激。谢谢!
最佳答案
它不会产生任何内存泄漏。从创建对象的行开始,事情按以下顺序发生:
- 创建了类
crazyClass
的新实例 madnessUnleashed
被作为静态方法调用,因此self
在这种情况下是之前创建的对象。- python 的垃圾收集器检查对象是否仍被引用(不是)并将其从内存中删除
所以这里基本上没有什么特别的事情发生。 您可以在此处阅读有关垃圾收集器的更多信息:https://rushter.com/blog/python-garbage-collector/
关于python - 在不实例化任何对象的情况下使用实例方法可能是危险的还是有用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691275/