首页 > 解决方案 > Python中未填充的参数和静态方法

问题描述

这是一个与windows操作相关的程序。我制作了这个程序的不同版本。所以我尝试使用类编写一个版本。我是初学者,认为这将有助于我理解这个概念,但我遇到了一些错误,例如

Method 'shutdown_windows' may be 'static'

有很多这样的错误,我想了解一下它们以及如何解决它们

这是我的代码:

import os
import datetime
import time


class WindowsOperations(object):
    def __init__(self, shutdown, restart, open_app, close_app):
        self.shutdown = shutdown
        self.restart = restart
        self.open_app = open_app
        self.close_app = close_app

    def shutdown_windows(self):
        time.sleep(remaining_time)
        while True:
            if time_hour == datetime.datetime.now().hour and time_minutes == datetime.datetime.now().minute:  #
                os.system("shutdown /s /t 1")
                break

    def restart_windows(self):
        time.sleep(remaining_time)
        while True:
            if time_hour == datetime.datetime.now().hour and time_minutes == datetime.datetime.now().minute:
                os.system("shutdown /r /t 1")
                break

    def open_application(self):
        app_name_open = input("Enter the application name you want to open: ").lower() + ".exe"
        time.sleep(remaining_time)
        while True:
            if time_hour == datetime.datetime.now().hour and time_minutes == datetime.datetime.now().minute:
                os.startfile(app_name_open)
                break

    def close_application(self):
        app_name_close = input("Enter the application name you want to close: ").lower() + ".exe"
        time.sleep(remaining_time)
        while True:
            if time_hour == datetime.datetime.now().hour and time_minutes == datetime.datetime.now().minute:
                os.system("TASKKILL /F /IM " + app_name_close)
                break


choice = int(input("Enter your choice \n1.Shutdown Windows \n2.Restart Windows "
                   "\n3.Open an application \n4.Close an application \n:"))
time_hour = int(input("Enter hour: "))
time_minutes = int(input("Enter minutes: "))
time_now = datetime.datetime.now()
remaining_time = ((time_minutes - time_now.minute) * 60 + (time_hour - time_now.hour) * 3600) % 86400
print(remaining_time)
my_windows_operation = WindowsOperations('shutdown', 'restart', 'open_app', 'close_app')
if choice == 1:
    my_windows_operation.shutdown_windows()
elif choice == 2:
    my_windows_operation.restart_windows()
elif choice == 3:
    my_windows_operation.open_application()
elif choice == 4:
    my_windows_operation.close_application()
else:
    print("Please enter a valid input")

如有必要,请修改代码并给我一些提示

标签: pythonwindowsclassobject

解决方案


第二个“参数'shutdown'未填充”是一个错误。它的出现是因为您已将初始化程序定义WindowsOperations为采用 4 个参数:

def __init__(self, shutdown, restart, open_app, close_app):

但是在实际创建对象时,您什么也没有传递:

my_windows_operation = WindowsOperations()

你肯定需要解决这个问题。

第一个“方法'shutdown_windows'可能是'静态'”更多的是一个建议。它的出现是因为该方法shutdown_windows不使用self- 即它不需要成为类的一部分来完成它的工作。


推荐阅读