gpt4 book ai didi

python - 如何高效地设计一个包含相关成员变量的类?

转载 作者:太空狗 更新时间:2023-10-30 00:44:16 25 4
gpt4 key购买 nike

假设我想要一个名为 Num 的类,它包含一个数字、它的一半和它的平方。

我应该能够修改这三个变量中的任何一个,它会影响所有相关的成员变量。我应该能够使用这三个值中的任何一个来实例化该类。

设计此类的最佳方式是什么,以便可以轻松修改它并确保我不会留下任何东西?

我应该存储所有三个号码还是只存储主要号码?

例如,这是我将如何在 Python 中使用我的类:

num = Num(5)
print num.n, num.half, num.square

它应该打印 5、2.5 和 25

这很简单,但我也想用它的一半进行初始化。

num = Num(half=2.5)
print num.n, num.half, num.square

它还应该打印 5、2.5 和 25

如何让 init 函数知道它是一半?

而且我还想修改任何一个号码,它会改变所有相关号码!例如:

num.square = 100
print num.n, num.half, num.square

它应该打印 10、5 和 100。

如何设计类(class)?

最佳答案

与@Daniel 相同的解决方案 - 扩展,无 lambda,Python 3.3:

class Num:
#class Num(object): for Python 2.
def __init__(self, n = None, half = None, square = None):
if n is not None:
self.n = n
elif half is not None:
self.half = half
elif square is not None:
self.square = square
else:
self.n = 0

@property
def n(self):
return self.__n
@n.setter
def n(self, n):
self.__n = n
@property
def half(self):
return self.n / 2.0
@half.setter
def half(self, n):
self.n = n * 2
@property
def square(self):
return self.n ** 2
@square.setter
def square(self, n):
self.n = n ** .5

>>> five = Num(n=5)
>>> five.half, five.n, five.square, five._Num__n
(2.5, 5, 25, 5)
>>>

关于python - 如何高效地设计一个包含相关成员变量的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31904948/

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