python中的class名没有括号_为什么没有构造函数参数的类需要括号

我开始在PHP中学习编程/OOP。据我对PHP最佳实践的了解,如果一个类不带任何参数,可以不带括号地实例化它。在

例如$class = new Class;

与之相反的是:

^{pr2}$

我开始将我的技能扩展到python中,昨天我浪费了大约5个小时试图弄清楚为什么一个函数不能通过一个参数,尽管它非常简单。我的代码:class MainViewWidgets(MainViewContainer):

def __init__(self):

# instantiating like this prevents MainViewController.getHeaderItems from returning the arg passed to it, however the code still "works" in some sense

self.controller = MainViewController

#this works

self.controller = MainViewController()

def createHeaderOptionCheckbox(self, pane):

self.header_string = StringVar()

header_checkbox = ttk.Checkbutton(pane, text='Data Contains Headers', variable=self.header_string, onvalue='headers', offvalue='keys')

self.header_string.trace('w', self.headerOptionCheckboxChanged)

return header_checkbox

def headerOptionCheckboxChanged(self, *args):

print(self.header_string.get())

#will print "headers" or "keys" on checkbox toggle

print(self.controller.getHeaderItems(self.header_string.get()))

#prints "default"

class MainViewController:

def __init__(self):

self.CheckFile = CheckFile()

get_config = GetConfiguration('config.ini')

self.config_file = get_config.getProperty('directory', 'input_file')

self.csv = CSVReader(self.config_file)

self.chosen_index = None

def getHeaderItems(self, header='default'):

return header

有人能帮助我理解为什么在Python中,即使除了self之外没有构造函数参数,也需要用括号实例化一个类。另外,为什么MainViewController仍然可以工作,但是它的行为却没有我想要的那样?因为它是加载的,函数“做了一些事情”,但它似乎不接受参数。实例化一个没有括号的类有什么好处吗?在

请注意,我不需要帮助让这个代码工作,我只是想了解为什么会发生这种情况。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值