gpt4 book ai didi

python - 我可以将参数添加到 python 属性以减少代码重复吗?

转载 作者:太空狗 更新时间:2023-10-30 01:42:29 25 4
gpt4 key购买 nike

我有以下类(class):


class Vector(object):
def __init__(self, x=0, y=0, z=0):
self.x = x
self.y = y
self.z = z

def _getx(self):
return self._x
def _setx(self, value):
self._x = float(value)
x = property(_getx, _setx)

def _gety(self):
return self._y
def _sety(self, value):
self._y = float(value)
y = property(_gety, _sety)

def _getz(self):
return self._z
def _setz(self, value):
self._z = float(value)
z = property(_getz, _setz)

这三个 getter 和 setter 除了它们修改的对象属性 (x, y, z) 之外都是相同的。有没有一种方法可以写一个 get 和一个 set,然后将变量传递给修改,这样我就不会重复自己?

最佳答案

当然,按照 this doc 中清楚解释的概念制作自定义描述符:

class JonProperty(object):
def __init__(self, name):
self.name = name

def __get__(self, obj, objtype):
return getattr(obj, self.name)

def __set__(self, obj, val):
setattr(obj, self.name, float(val))

然后直接使用它:

class Vector(object):
def __init__(self, x=0, y=0, z=0):
self.x = x
self.y = y
self.z = z
x = JonProperty('_x')
y = JonProperty('_y')
z = JonProperty('_z')

关于python - 我可以将参数添加到 python 属性以减少代码重复吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1380566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com