Python中文
首页
教程
问答
标签
搜索
登录
注册
类方法在Python中不返回值
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我在将变量传递到函数并让它返回所需值时遇到了一些问题。为清楚起见,我将从PostgreSQL表中获取一条记录作为元组,然后将该元组的相关索引传递给类变量。除此之外,其他一切似乎都起作用了,我不知道为什么</p> <p>代码如下:</p> <pre class="lang-py prettyprint-override"><code>from datetime import date from decimal import Decimal from config import config import psycopg2 conn = None try: params = config() conn = psycopg2.connect(**params) cur = conn.cursor() cur.execute('SELECT * FROM testdb.vitals ORDER BY "vitalsID"') except (Exception, psycopg2.DatabaseError) as error: print(error) row = cur.fetchone() class Vitals: birth = date(1990, 12, 12) today = date.today() years = today.year - birth.year age = today.year - birth.year - ((today.month, today.day) < (birth.month, birth.day)) weight = row[2] height = row[3] activity = row[4] goal = row[5] fatRatio = row[6] carbohydrateRatio = row[7] proteinRatio = row[8] def __init__(self): # connect and initialise vitals pass # display on gui @classmethod def activityText(cls): if cls.activity == Decimal(1.20): return testActivity * 2 @classmethod def bmr(cls): return (Decimal(10) * cls.weight) + (Decimal(6.25) * cls.height) - (Decimal(5) * cls.age) + Decimal(5) @classmethod def tdee(cls): return Decimal(outputBmr * cls.activity) @classmethod def net(cls): if cls.goal == 1: return outputTdee - (outputTdee * Decimal(0.1)) else: return outputTdee importVitals = Vitals testActivity = importVitals.activity print(testActivity) testActivityfunc = importVitals.activityText() print(testActivityfunc) outputBmr = round(importVitals.bmr()) print(outputBmr) outputTdee = round(importVitals.tdee()) print(round(outputTdee)) outputNet = round(importVitals.net()) print(outputNet) if importVitals.activity == Decimal(1.20): print('Hello') else: print("\n") print(importVitals.activity) print(type(importVitals.activity)) </code></pre> <p>关键类方法如下所示:</p> <pre class="lang-py prettyprint-override"><code> @classmethod def activityText(cls): if cls.activity == Decimal(1.20): return testActivity * 2 </code></pre> <p>输出(模块中的最终if语句更改后)如下所示:</p> <pre class="lang-py prettyprint-override"><code>1.20 <class 'decimal.Decimal'> None 1751 2101 1891 1.20 <class 'decimal.Decimal'> Process finished with exit code 0 </code></pre> <p>为了便于阅读,以下是打印语句:</p> <pre class="lang-py prettyprint-override"><code> testActivity = importVitals.activity print(testActivity) print(type(importVitals.activity)) testActivityfunc = importVitals.activityText() print(testActivityfunc) outputBmr = round(importVitals.bmr()) print(outputBmr) outputTdee = round(importVitals.tdee()) print(round(outputTdee)) outputNet = round(importVitals.net()) print(outputNet) if importVitals.activity == Decimal(1.20): print('Hello') else: print("\n") print(importVitals.activity) print(type(importVitals.activity)) </code></pre> <p>所讨论的类方法总是返回<code>None</code>。还要注意模块末尾的if语句。它总是运行else分支,至少对我来说,它奇怪地打印<code>1.20</code>和<code><class 'decimal.Decimal'></code>。因此,如果Python识别出<code>importVitals.activity</code>的实例类变量具有<code>1.20</code>值和<code><class 'decimal.Decimal'></code>的变量类型,那么为什么if语句或类方法没有返回我想要的结果呢?我有什么地方做错了吗</p> <p>只是重申一下,所有其他方法和打印语句都按预期工作,因此我对此感到非常困惑</p> <p>感谢所有花时间阅读本文的人。如果您能提供任何帮助,我将不胜感激</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>看起来您有数字错误:</p> <pre><code>>>> Decimal(1.20) Decimal('1.1999999999999999555910790149937383830547332763671875') >>> Decimal("1.20") Decimal('1.20') </code></pre> <p>使用字符串作为小数的输入,一切都应该正常。浮点数适用于快速计算,但不适用于精度</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
2 回答
当用户登录到站点时,如何显示不同的导航栏
10 回答
当用户登录时,在Flask中向用户显示处理结果
1 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
4 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
7 回答
当用户的付款逾期2天时,从Django模型检索数据
4 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
1 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
5 回答
当用户确定打印数量时,使用Matplotlib打印动画
5 回答
当用户离开时是否可以删除整个网页?
1 回答
当用户给出一个单词时如何打印?
10 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
8 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
4 回答
当用户被更改时,消息不会来自web套接字
7 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
9 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
5 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
7 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
2 回答
当用户购买某个类别时,是否查找其他类别的销售?
4 回答
当用户转到上一页时,Django和芹菜插入操作
5 回答