pygame实例化对象后调用方法还能赋值给变量吗
import pygameimport sys
from pygame.locals import *
pygame.init()
white = 255, 255, 255
blue = 0, 0, 200
screen = pygame.display.set_mode((600, 500))
myfont = pygame.font.Font(None, 60)
textImage = myfont.render('Hello Pygame', True, white)
print(myfont, textImage)
while True:
for event in pygame.event.get():
if event.type in (QUIT, KEYDOWN):
sys.exit()
screen.fill(blue)
screen.blit(textImage, (100, 100))
pygame.display.update()
结果是打印myfont和textImage,打印出的内容是<pygame.font.Font object at 0x02D61E20> <Surface(276x43x32 SW)>
myfont是个对象,myfont调用render方法后赋值给了textImage,这是个啥东西?求教大佬! 本帖最后由 suchocolate 于 2021-10-16 19:49 编辑
类实例化出一个对象后使用方法,能不能赋值给变量,要看这个方法能不能返回可用的对象。不光是pygame,所有python都是对象。
>>> ls1 =
>>> p = ls1.pop()# pop有返回值,返回值默认是最后一个元素,赋值给p,所以打印p有返回值
>>> p
4
>>> ls1
>>> ls2 = ls1.sort() # sort没有返回值,它是在原对象上直接进行操作,我们赋值给变量ls2也没有意义,所以打印ls2空
>>> ls1
>>> ls2
>>>
myfont = pygame.font.Font(None, 60)# 创建pygame中的字体对象,此刻myfont就是字体对象。
textImage = myfont.render('Hello Pygame', True, white)# 字体对象有render方法,这个方法可生成surface对象,赋值给textImage,之后用于在游戏中显示,此刻textImage就是一个surface对象。
print(myfont, textImage)# 如果对象类没有设置__str__方法,python就会告诉你这个对象是什么类型的对象:<pygame.font.Font object at 0x02D61E20> <Surface(276x43x32 SW)>
while True:
for event in pygame.event.get():
if event.type in (QUIT, KEYDOWN):
sys.exit()
screen.fill(blue)
screen.blit(textImage, (100, 100))# 更新游戏图像
pygame.display.update()
另外说print一个对象,能看到什么内容,要看这个对象所在类的__str__方法是怎么定义的,如果没有定义话,默认python就会打印出这个类的名字。
>>> class A:
def __str__(self):
return 'A class!'
>>> a = A()
>>> print(a)
A class!
>>>
>>> b = B()
>>> print(b)
<__main__.B object at 0x000002657E2919B0>
>>>
页:
[1]