簡體   English   中英

獲取 Python 屬性的 setter 函數

[英]Getting the setter function of a Python property

我正在使用帶有onchange參數的 GUI 模塊。

目前我有一個包含屬性的Settings對象,我想將它們綁定到我的 GUI。

但是我的 GUI 只接受setter 函數,而不接受variables ,所以我需要獲取我的屬性的 setter 函數。

這是Settings代碼:

class Settings:
    def __init__(self):
        self._name = "Jhon Doe"

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        if value.count(" ") > 1:
            self._name = value

這是(簡化的)GUI代碼:

import pygame
import pygame_menu
from settings import Settings

settings = Settings()

pygame.init()
surface = pygame.display.set_mode((600, 600))

menu = pygame_menu.Menu('My menu', 600, 600)

menu.add.text_input('Name :', default='John Doe', onchange=settings.name)
menu.add.button('Quit', pygame_menu.events.EXIT)
menu.mainloop(surface)

你不需要實際的函數,它被寫成一個方法,所以它需要實例。 只要做你在這種情況下會做的事情,不管有沒有property

def _callback(value):
    settings.name = value

menu.add.text_input('Name :', default='John Doe', onchange=_callback)

或者,或者,

menu.add.text_input('Name :', default='John Doe', onchange=lambda value: setattr(settings, "name", value))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM