Skip to content

Navigation Menu

Sign in
Sign up

Python sketches are not Pythonic #230

Open

Description

Sorry for the vague title, feel free to update it.

Using https://github.com/processing/processing-examples-mewnala/blob/6e416d80852ee9e147b70ae93cbf8f6dda871ba3/Basics/Structure/Redraw/Redraw.py as an example, a mewnala sketch structure and common techniques has several issues that makes it less ideal as Python code:

As an alternative, a class based approach can solve all these issues:

from mewnala import (
 Line,
 Sketch as BaseSketch,
)
class Sketch(BaseSketch):
 def __init__(self, width=640, height=480):
 super().__init__()
 self.width = width
 self.height = height
 def setup(self):
 self.size = (self.width, self.height)
 self.stroke = 255
 self.loop = False
 self.y = 180
 def draw(self):
 self.background = 0
 self.y -= 4
 if self.y < 0:
 self.y = self.height
 line = Line(0, self.y, self.width, self.y)
 line.draw()
 def mouse_pressed(self):
 self.redraw()
if __name__ == "__main__":
 sketch = Sketch(width=1920, height=1080)
 sketch.run()

No more magic imports, no more undefined variables, and now the sketch has a Python-native syntax feel much more natural comparing to the previous version.

I removed the setter function calls too, it's a Java-native pattern and feels weird with Python.

We can go one step further and eliminate the setup() What does it do for the sketch can be covered by __init__ in a class context.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      AltStyle によって変換されたページ (->オリジナル) /