죄송합니다. 질문 보관소에 이미 존재하지만 죄송합니다. 검색을 통해 위대한 계시로 이어지지 않았다면 죄송합니다. .Python - 클래스 속성을 같은 클래스의 다른 속성 값에 의존하도록 설정하십시오.
나는 그래서 .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
를 반환하는 클래스
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
을 만들었습니다 (또는 내가 함수 나 방법이 부릅니까 파이썬 (의 2.6.x)에서
? I 여기에 솔직하게 lingo가 확실하지 않음) start.jd() 호출 전에 존재하지 않습니다. timetuple 클래스의 현재 값을 기반으로 항상 존재하게 만들거나 .jd 속성이 호출 될 때 자체를 업데이트하도록하는 방법이 있습니까?
나는 난 그냥 초기화 (자기) 섹션에서 .jd 속성을하여 그것에게 먼 길을 할 수있어 다음
start = timetuple()
start.jd = julian_date(start)
같은 일을하지만 난 방법을 알고 싶습니다 더 솔직히 내 클래스를 설정 :
".jd"귀하의 경우, 및 모자 방법, 재산으로 redefiens. 이 코드는 methoda의 이름과 인스턴스 속성으로 .jd를 사용하기 때문에 예상대로 작동하지 않습니다. – jsbueno
앰버의 대답은 좋은 것입니다. 그러나 당신이 여기에있는 것은 매우 이상합니다. 왜'__init __()'에'self.jd = julian_date (self)'를 넣지 않았습니까? – senderle
@senderle :'__init__' 섹션에 넣으면 클래스의 인스턴스가 생성 될 때 한 번만 업데이트되고 나중에 다른 속성이 변경되면 .jd 속성이 업데이트되지 않습니다. – Ryan