将函数转换为类Python,初学者

时间:2017-11-10 09:33:03

标签: python python-3.x class

您好我试图通过将此函数转换为类来编写我的第一个类。

#My Function

def left_click_first_Thompson(x, y, clicks=17):
    SetCursorPos(x, y)
    for i in range(clicks):
        mouse_event(2, 0, 0, 0, 0)
        mouse_event(4, 0, 0, 0, 0)

def left_click_M1A1_Thompson(x, y, clicks=2):
    SetCursorPos(x, y)
    for i in range(clicks):
        mouse_event(2, 0, 0, 0, 0)
        mouse_event(4, 0, 0, 0, 0)

"""我试图把它变成一个班级"""

class AimMouse(object):

    # The Constructor to Instantiate the Objects
    def __init__(self, x, y, clicks):
        self.x = x
        self.y = y
        self.clicks = clicks

    def left_click_first_Thompson(self, x, y, clicks=17):
        SetCursorPos(x, y)
        for i in range(clicks):
            mouse_event(2, 0, 0, 0, 0)
            mouse_event(4, 0, 0, 0, 0)

    def left_click_M1A1_Thompson(self, x, y, clicks=2):
        SetCursorPos(x, y)
        for i in range(clicks):
            mouse_event(2, 0, 0, 0, 0)
            mouse_event(4, 0, 0, 0, 0)

我可以请某人去证明阅读并纠正吗?

由于

1 个答案:

答案 0 :(得分:2)

编辑:由于我现在理解了您的想法,这里有一些代码可以让您走上正轨:

import ctypes

SetCursorPos = ctypes.windll.user32.SetCursorPos
mouse_event = ctypes.windll.user32.mouse_event

class Aimer:
    def __init__(self, clicks):
        self.clicks = clicks 

    def handle_click(self, x, y):
        SetCursorPos(x, y)
        for i in range(self.clicks):
            mouse_event(2, 0, 0, 0, 0)
            mouse_event(4, 0, 0, 0, 0)

thompsonAimer = Aimer(clicks=17) 
m1a1Aimer = Aimer(clicks=2)

您的代码是正确的,但您没有解释将其转化为课程的动机。

当各种功能需要共享某些状态时,通常会使用类。例如,假设我们想要修复所有函数调用的单击次数,并且函数不会收到这样的参数。您在构造函数中设置self.clicks = clicks,然后在left_click...中设置,而不是使用self.clicks的点击。

现在的样子,存储self.xself.yself.clicks是没有意义的,因为它们没有被使用。

如果您是初学者,我不建议您专注于课程,但了解它们的工作原理会很好。