Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 类实例是否可以在不使用属性的情况下返回元组?_Python_Vector_Magic Methods - Fatal编程技术网

Python 类实例是否可以在不使用属性的情况下返回元组?

Python 类实例是否可以在不使用属性的情况下返回元组?,python,vector,magic-methods,Python,Vector,Magic Methods,我有一个小问题,它本身不是什么大问题,但仍然困扰着我。考虑下面的代码。 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

我有一个小问题,它本身不是什么大问题,但仍然困扰着我。考虑下面的代码。

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))
如果没有引用属性或方法,是否有一个神奇的方法返回值

在pygame中,您可以定义一个向量,如v=pygame.math.vector2(10,10),然后将该向量传递给一个曲面blit函数,如someSurface.blit(sprite,v),无需引用方法或属性即可获得该值,因此看起来确实可行,虽然我认为blit函数可以处理向量2作为参数是完全合理的


感谢您抽出时间。

实施
\uuuu len\uuuuu
\uuu getitem\uuuuu

类向量:
定义初始值(s,x,y):
s、 x=int(x)
s、 y=int(y)
s、 t=(s.x,s.y)
定义添加(s,n):
返回向量(s.x+n[0],s.y+n[1])
定义长度:
返回2
定义获取项目(s,i):
返回[s.x,s.y][i]

作为旁注:每个人都尊重使用
self
,而不是
s
的惯例。不要让你的代码对我们来说更难阅读…更难?一般来说,每次它打破了备受尊重的惯例,阅读代码就不那么容易和流畅了。Python中的约定非常受尊重。请参阅官方风格指南。这很有效,谢谢。这将使我的代码更整洁:)