Python:我正确使用"自我"吗?

Rya*_*yan 0 python syntax self

我是Python的新手,我现在才开始看到它的用途,self并想知道我是否正确使用它.我在下面有一些示例代码,并想知道是否有人可以浏览并查看它是否正确使用.我不确定它是否正确,因为我似乎需要使用self很多,但也许这只是语言的风格.谢谢

from tkinter import Canvas

class BouncyBall:
    def __init__(self):
        self.x = 0
        self.y = 0
        self.d = 15
        self.color = 'blue'
        self.speed = 2
        self.move_left = False
        self.move_right = False

    def __init__(self, x, y, d, color):
        self.x = x
        self.y = y
        self.d = d
        self.color = color
        self.speed = 2
        self.move_left = False
        self.move_right = False

    #Accessor Methods
    def get_x(self):
        return self.x
    def get_y(self):
        return self.y
    def get_diameter(self):
        return self.d
    def get_color(self):
        return self.color
    def get_speed(self):
        return self.speed
    def moving_right(self):
        return self.move_right
    def moving_left(self):
        return self.move_left

    #Mutator Methods
    def set_x(self, x):
        self.x = x
    def set_y(self, y):
        self.y = y
    def set_diameter(self, d):
        self.d = d
    def set_color(self, color):
        self.color = color
    def set_speed(self, speed):
        self.speed = speed
    def set_move_right(self, move_right):
        self.move_right = move_right
    def set_move_left(self, move_left):
        self.move_left = move_left

    def draw_ball(self, canvas):
        if isinstance(canvas, Canvas):
            canvas.create_oval(self.x, self.y, self.x + self.d, self.y + self.d, fill=self.color)
        else:
            print("Improper Parameter Sent In")
Run Code Online (Sandbox Code Playgroud)

Joh*_*nck 6

self正确使用.与其他语言(如this隐含参数的C++)相比,它确实在Python中出现了很多.

但是,在Python中,正如您所做的那样,为所有内容编写get()set()方法并不常见.您可以通过删除这些代码来减少代码 - 并删除过程中的大量代码self.