|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import pygame
- import 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 = [5, 2, 1, 3, 4]
- >>> p = ls1.pop() # pop有返回值,返回值默认是最后一个元素,赋值给p,所以打印p有返回值
- >>> p
- 4
- >>> ls1
- [5, 2, 1, 3]
- >>> ls2 = ls1.sort() # sort没有返回值,它是在原对象上直接进行操作,我们赋值给变量ls2也没有意义,所以打印ls2空
- >>> ls1
- [1, 2, 3, 5]
- >>> 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>
- >>>
复制代码
|
|