作为一种自学Python的方法,我已经摒弃了一些旧的本科机械工程文本,并为一些简单的概念创建了一些计算器。假设我有一个计算器类(为了简洁起见非常简单):
from math import pi
import tkinter as tk
class Cylinder(object):
"""Abstraction of a cylinder primitive."""
def __init__(self):
"""See class docstring."""
self.radius = 0.0
self.height = 0.0
def calc_volume(self):
"""See class docstring."""
self.volume = pi * self.height * self.radius**2
现在我想将它包装在tkinter
gui中。在我的项目中可能有大量的计算器,我当然不想为每个计算器编写自定义包装器,因此我正在尝试开发一种内容不可知的方法。所以,我开始写作:
class CalcGUI(tk.Frame):
"""To do. Write me."""
def __init__(self, master=None, calc_object=None):
"""See class docstring."""
tk.Frame.__init__(self, master)
self.grid()
self.entries, self.entry_vars = {}, {}
for num, item in enumerate(calc_object.__dict__):
tk.Label(self, text=item).grid(row=num, column=0)
self.entry_vars[item] = tk.StringVar()
self.entries[item] = tk.Entry(self,
textvariable=self.entry_vars[item])
self.entries[item].grid(row=num, column=1)
这适用于简单的变量名称,例如radius
,但是对于更复杂的项目,我不想混淆具有长self.coefficient_of_thermal_expansion
或self.average_air_velocity_of_a_coconut_laden_swallow
等变量名称的计算器,所以我想要一种优雅的方式将我认为的UI信息传递给GUI,比如英文名称,预期单位等,并且我正在寻找一些最佳实践。我考虑过的一些选择:
tuples
或namedtuples
。
其中哪些(如果有的话)将被视为Python中的最佳实践?
编辑为什么不是长变量? 考虑下面的光束偏转方程:
y = (3 * a - x) * (P * x**2) / (6 * E * I)
将它放在一个类方法中你可以编写类似的东西:
self.y = (3 * self.a - self.x) * (self.P * self.x**2) / (6 * self.E * self.I)
或长变量:
self.beam_deflection = ((3 * self.force_location - self.location_on_beam) *
(self.point_force * self.location_on_beam**2) /
(6 * self.modulus_of_elasticity * self.moment_of_inertia))
我个人认为第一种选择更具可读性。也就是说,没有理由我不能像以下那样对变量进行别名:E = self.modulus_of_elasticity
但这仍然只能解决一个难题。它不涉及单位或其他项目(例如,变量应作为条目或列表框输入的标志等)。