python - 为什么在这种情况下我需要调用“自我”?
问题描述
我是 OOP 的新手,我想知道为什么我需要将参数 MainWindow 提供给最后一行。如果我自己调用 outside_func,我不需要参数,但是当我在类中调用它时,我需要提供类名以使其工作。例如,MainWindow.class_func2() 抛出错误
class MainWindow():
def __init__(self):
print("in init")
def claas_func(self):
print ("func1")
def class_func2(self):
outside_func()
def outside_func():
print('outside called')
instance = MainWindow()
MainWindow.class_func2(MainWindow)
解决方案
你应该看看@staticmethod
class MainWindow():
def __init__(self):
print("in init")
def claas_func(self):
print ("func1")
@staticmethod
def class_func2():
return outside_func()
def outside_func():
print('outside called')
instance = MainWindow()
>> in init
instance.class_func2()
>> outside called
这个@staticmethod(它本身就是一个很酷的东西,叫做'decorator')将使方法本身完全可以调用,而无需传递'self'。
希望能帮助到你
推荐阅读
- class - 如何在飞镖中将类实例的创建限制为一个?
- javascript - 如何显示 React Ace Editor onClick 的 value 属性?
- c - 为什么hello world只打印两次,为什么a的最大值是2
- python - 如何将过滤的csv日期写入新文件python
- java - 使用 Scanner 类从 Java 中的 CSV 文件计算平均值
- javascript - Nativescript 如何在 typescript 中编写 HTML,例如 document.write()
- postgresql - Postgis 在某些查询期间断开连接
- c++ - 为什么 gcc 会产生这个奇怪的程序集 vs clang?
- javascript - 如何在 chart.js 中创建时间序列折线图?
- vba - 有没有办法在 mac 上正确运行 vba 代码访问?