class 实例 return 元组可以不使用属性吗?
Can a class instance return tuple without using attribute?
我遇到了一个小问题,它本身不是什么大问题,但对我的困扰却越来越小 none。考虑下面的代码。
import pygame
class vector:
def __init__(s, x, y):
s.x = int(x)
s.y = int(y)
s.t = (s.x, s.y)
def __add__(s, n):
return vector(s.x + n[0], s.y + n[1])
size = vector(10, 10)
pygame.Surface((size + (5, 5)).t)
当将向量作为参数传递给 pygame.Surface 时,我必须使用 't' 属性来访问存储在 'size'.
中的元组
有没有办法简单的像这样?
pygame.Surface(size + (5, 5))
有没有一种神奇的方法可以在没有引用属性或方法的情况下returns一个值?
在 pygame 中你可以这样定义一个向量,v = pygame.math.vector2(10, 10) 然后将该向量传递给像这样的表面 blit 函数 someSurface.blit(sprite, v) 并且不需要引用方法或属性来获取值所以它看起来是可能的,虽然我猜它是blit 函数可以将 vector2 作为参数处理是完全合理的吗?
感谢您的宝贵时间。
实施 __len__
和 __getitem__
:
class vector:
def __init__(s, x, y):
s.x = int(x)
s.y = int(y)
s.t = (s.x, s.y)
def __add__(s, n):
return vector(s.x + n[0], s.y + n[1])
def __len__(s):
return 2
def __getitem__(s, i):
return [s.x, s.y][i]
我遇到了一个小问题,它本身不是什么大问题,但对我的困扰却越来越小 none。考虑下面的代码。
import pygame
class vector:
def __init__(s, x, y):
s.x = int(x)
s.y = int(y)
s.t = (s.x, s.y)
def __add__(s, n):
return vector(s.x + n[0], s.y + n[1])
size = vector(10, 10)
pygame.Surface((size + (5, 5)).t)
当将向量作为参数传递给 pygame.Surface 时,我必须使用 't' 属性来访问存储在 'size'.
中的元组有没有办法简单的像这样?
pygame.Surface(size + (5, 5))
有没有一种神奇的方法可以在没有引用属性或方法的情况下returns一个值?
在 pygame 中你可以这样定义一个向量,v = pygame.math.vector2(10, 10) 然后将该向量传递给像这样的表面 blit 函数 someSurface.blit(sprite, v) 并且不需要引用方法或属性来获取值所以它看起来是可能的,虽然我猜它是blit 函数可以将 vector2 作为参数处理是完全合理的吗?
感谢您的宝贵时间。
实施 __len__
和 __getitem__
:
class vector:
def __init__(s, x, y):
s.x = int(x)
s.y = int(y)
s.t = (s.x, s.y)
def __add__(s, n):
return vector(s.x + n[0], s.y + n[1])
def __len__(s):
return 2
def __getitem__(s, i):
return [s.x, s.y][i]