python - 有什么方法可以缩短具有相似语句但返回不同的属性?
问题描述
class....
@property
def degrees(self):
hem, degs, mins, secs = self._correction()
return degs
@property
def minutes(self):
hem, degs, mins, secs = self._correction()
return mins
@property
def seconds(self):
hem, degs, mins, secs = self._correction()
return secs
我在想def可以被截断为:
@property
def hemisphere, degrees, minutes, seconds(self):
hem, degs, mins, secs = self._correction()
return hem, degs, mins, secs
这样当我调用“半球”时,它会返回下摆值等等。
PS。我知道我在后者中的return声明是错误的。我希望你明白我的意思。
解决方案
你可以覆盖__getattr__
方法
def __getattr__(self, item):
values = ["hemisphere", "degrees", "minutes", "seconds"]
if item in values:
return self._correction()[values.index(item)]
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{item}'")
推荐阅读
- mongodb - 当文档仅保存非空列时面临排序问题
- ios - CordovaError: Promise denied with non-error: 'xcodebuild was not found. 请从 App Store 安装 9.0.0 或更高版本'
- excel - 保存打开的 Excel 文件时出现 PowerShell 错误
- web-scraping - 美丽的汤不返回所有标签
- r - R - for 循环正确地将变量传递给链接
- python - 命名为 Phaster 的 Python 脚本出错
- kotlin - 'break' 和 'continue' 只允许在循环内使用 - Kotlin
- node.js - Swagger:请求验证失败:参数模式验证失败”
- python - Django 查询“icontains”仅适用于数字
- jquery - 从数据属性中获取数组