필자는 import 문, 클래스 정의, 다른 루틴 및 클래스의 메서드를 호출하는 "main"문을 순서대로 사용하여 일반적으로 구조화 된 Python 프로그램을 사용합니다. 수입 후 인쇄 문은파이썬 모듈 실행 순서
파이썬 2.7.2
내가 클래스 메소드에 나가서 설명하자면 NameError을 얻고있다 "OK"를 인쇄합니다.
print >> common, ...
NameError: 'common' is not defined
common
common
이 많은 방법에 사용됩니다.이 방법을 물리적으로 움직이는 것은 효과가 없습니다.이 방법에서는 오류가 여전히 같은 줄에 있습니다.
전에 전에 오류가 발생하고 "main"문이 실행되기 전에 오류가 발생합니다. 메서드에서 return을 첫 번째 실행 문으로 사용하는 것은 효과가 없습니다. 이것은 클래스 정의 시간에 모두 분명히 발생합니다.
print >> common
문을 주석 처리하면 동일한 메서드에서 다른 NameError가 발생합니다.
'정의 시간'에 메서드 내에서 NameError를 어떻게 얻을 수 있는지 알 수 없습니다.
아이디어가 있으십니까? 방법은 다음과 같습니다.
x = z ** 2는 입니다.은 NameError를 생성합니다. z는 없습니다. 모든 함수 정의가 실행 된 직후에 print 문이 실행되지 않습니다.
"""code below"""
@classmethod
def show_role_map(cls):
"""show jobs within roles, with total days, with percents of totals"""
return
raise ZeroDivisionError
return
print >> common, "xyzzy"
x = z ** 2
p = Performance("Traveler: show_role_map")
print "\tshow_role_map"
roles = cls.role_map.keys()
roles.sort()
header ("Qualitative Role Map")
role_totals = collections.defaultdict(float)
job_totals = collections.defaultdict(float)
for name in Traveler.roster:
trav = Traveler.roster[name]
for day in trav.roles:
frac = 1.0/len(trav.roles[day])
for role in trav.roles[day]:
role_totals[role] += frac
for day in trav.jobs:
frac = 1.0/len(trav.jobs[day])
for job in trav.jobs[day]:
job_totals[job] += frac
role_total = sum(role_totals.values())
job_total = sum(job_totals.values())
assert abs(role_total - job_total) <= 1e-6
print >> common, "Total Role days =", role_total
print >> common, "Total Job days =", job_total
print >> common
for role in roles:
if role_totals[role] == 0: continue
print >> common, "\t%12s %51.1f %12s %12.3f" %\
(role, role_totals[role], \
"", 100.0 * role_totals[role]/role_total)
jobs = list(cls.role_map[role])
jobs.sort (key = lambda x: (job_totals[x], x), reverse = True)
for index, job in enumerate(jobs, 1):
if job_totals[job] == 0: continue
print role, job, role_totals[role], job_totals[job]
print >> common, "\t\t%6d. %35s %12.1f % 12.3f %12.3f" % \
(index, job, job_totals[job], \
100.0 * job_totals[job]/role_totals[role],
100.0 * job_totals[job]/role_total)
print >> common
print >> common, "\n", "_" * 60, "\n" #--ERROR OCCURS FOR THIS LINE ****************
print >> common, "\nRoles in Total Tripday order\n"
roles = role_totals.keys()
roles.sort (order = lambda x: (role_totals[x], x), reverse = True)
for index, role, in enumerate(roles,1):
print >> common, "%6d. %15s %12.1f %12.3f" % \
(index, role, role_totals[role], \
100.0 * role_totals[role]/role_total)
print >> common, "\n", "_" * 60, "\n"
print >> common, "\nDetailed Trip Roles in Total Tripday order"
jobs = job_totals.keys()
jobs.sort (key = lambda x: (job_totals[x], x), reverse = True)
for index, job in jobs:
print >> common, "%6d. %35s %12.1f %12.3f" % \
(index, job, job_totals[job], 100.0 * job_totals[job]/job_total)
p.close()
나는이 질문을 이해합니다. 그러나 일부 코드가 없으면 코드가 예상 한 것과 다른 부분을 알려주는 것이 매우 어렵습니다. 코드를 게시하십시오 – inspectorG4dget
문제가있는 코드의 전체 세그먼트 (방법)를 포함하십시오. –
코드를 게시하지 않고도 결과를 기대하지 마십시오.또한 사용중인 파이썬의 버전을 알려주고 싶을 수도 있습니다 (잠시 필요하지는 않지만). – inspectorG4dget