gpt4 book ai didi

python - 同一属性的 2 个名称

转载 作者:太空狗 更新时间:2023-10-29 20:45:22 26 4
gpt4 key购买 nike

我想知道是否有办法“链接”一个类的两个属性或为同一个属性赋予两个名称?

例如,我实际上正在编写一个脚本,该脚本根据用户提供的数据创建三角形。我的三角形是 ABC。这个三角形的边是 AB、BC 和 CA。所以三角形有这 3 个属性(self.AB、self.BC、self.CA)。但是 AB = BA 所以我想允许用户执行 print myInstance.BA 而不是 print myInstance.AB

所以我想创建属性 self.AB 和属性 BA(返回 self.AB)。当我尝试执行 print myInstance.BA 而不是 print myInstance.AB 时效果很好,但我很贪心......

我还想允许用户执行 myInstance.BA = 5 而不是 myInstance.AB = 5 并且在执行此操作时还要编辑属性 AB。

有没有办法做到这一点?

最佳答案

Python 属性可以有 setter 。所以你只需要

class Foo(object):

@property
def BA(self):
return self.AB

@BA.setter
def BA(self, value):
self.AB = value

并且受到@amccormack 的回答的启发,如果您可以依赖属性名称的顺序,这对于例如边 bc, cd:

  class Foo(object):


def __init__(self):
self.ab = 100

def __getattr__(self, name):
return getattr(self, "".join(sorted(name)))

def __setattr__(self, name, value):
super(Foo, self).__setattr__("".join(sorted(name)), value)


f = Foo()

print f.ba
f.ba = 200
print f.ba

关于python - 同一属性的 2 个名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30630700/

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