gpt4 book ai didi

Python - 将类属性设置为依赖于同一类中其他属性的值

转载 作者:行者123 更新时间:2023-11-28 19:59:20 25 4
gpt4 key购买 nike

很抱歉,如果这已经存在于问题文件的某处,但我不确定如何询问它并且搜索并没有带来任何重大启示。

在 Python (2.6.x) 中我创建了一个类

class timetuple(object):
def __init__(self):
self.weekday = 6
self.month = 1
self.day = 1
self.year = 2011
self.hour = 0
self.min = 0
self.sec = 0
def jd(self):
self.jd = julian_date(self)

def julian_date(obj):
(Code to calculate a Julian Date snipped)

start = timetuple()
start.day = 23
start.month = 2
start.year = 2011
start.hour = 13
start.min = 30
start.sec = 0

print start.__dict__
start.jd()
print start.__dict__
print start.jd

哪个返回

{'hour': 13, 'min': 30, 'month': 2, 'sec': 0, 'weekday': 6, 'year': 2011, 'date': 23, 'day': 1}
{'hour': 13, 'min': 30, 'month': 14, 'jd': 2455594.0625, 'sec': 0, 'weekday': 6, 'year': 2010, 'date': 23, 'day': 1}
2455594.0625

所以 .jd 属性(或者我称它为函数还是方法?老实说,我不确定这里的行话)在 start.jd() 调用之前不存在。有没有一种方法可以重写它以使其始终基于 timetuple 类中的当前值存在,或者让它在调用 .jd 属性时自行更新?

我知道我可以通过在 init(self) 部分创建一个 .jd 属性然后做类似的事情来做很长的路要走

start = timetuple()
start.jd = julian_date(start)

但老实说,我想知道如何更好地设置我的类(class):)

最佳答案

你想真正定义一个属性,而不是一个变量:

class A(object):

def __init__(self):
self.a = 1
self.b = 1

@property
def a_plus_b(self):
return self.a + self.b

foo = A()
print foo.a_plus_b # prints "2"
foo.a = 3
print foo.a_plus_b # prints "4"
foo.b = 4
print foo.a_plus_b # prints "7"

关于Python - 将类属性设置为依赖于同一类中其他属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130301/

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