簡體   English   中英

為什么我不能從python類中調用我的方法?

[英]why can't I call my method from within class in python?

我正在嘗試使用pygame為我的游戲制作一個按鈕類。 但是在按鈕類中,我無法調用類本身包含的方法。

我剛上課,所以我可能錯過了一些重要的東西,對不起

我試圖將self添加到isHovering()方法中,但仍然無法正常工作。

import pygame

class Button():
    def __init__(self, pos, value, img, screen):
        self.pos = pos
        self.value = value
        self.img = img
        self.screen = screen

    ### Getters and Setters ###===============
    ### Get/Set Value : True/False ###
    def setValue(self, value):
        self.value = value
    def getValue(self):
        return self.value

    ### Get/Set Pos ###
    def setPos(self, pos):
        self.pos = pos
    def getPos(self):
        return self.pos

    ### Get/Set Img ###
    def setImg(self, img):
        self.img = img
    def getImg(self):
        return self.img

    #==========================================

    def isHovering(self):
        pos = getPos()
        imgRect = pygame.rect(pos[0], pos[1], 105, 105)
        if imgRect.collidepoint(pygame.mouse.get_pos()):
            return True
        else:
            return False

    def update(self, screen):
        if isHovering():
            image = pygame.transform.scale(self.img(95, 95))
        else:
            image = pygame.transform.scale(self.img(105, 105))
        screen.blit(image, self.pos)

我以為在我的主循環中調用update(screen)時,它將調用isHovering()並返回True或False,但我卻收到此錯誤:

NameError:名稱“ isHovering”未定義

def update(self, screen) ,if語句應為if self.isHovering()

如果不是,解釋器將在當前模塊中的某個位置尋找isHovering函數,就像您在類之外定義它一樣。 使用self. 前綴將表明您確實在嘗試調用實例的方法,正如JacoblRR在注釋中已經指出的那樣。

暫無
暫無

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

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