首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对象没有属性- python类执行

对象没有属性- python类执行
EN

Stack Overflow用户
提问于 2017-03-13 21:15:48
回答 3查看 1.8K关注 0票数 1

我一直在寻找这个问题的答案,但我找不到答案,它可能太具体了。

我有一个简单的程序,我的第一个合适的程序,我创建它主要是为了练习:

代码语言:javascript
运行
复制
import math

class Logs(object):

  def __init__(self,a,b):
    self.a = a
    self.b = b

  def apply_log(self):
    self.a_log = math.log10(self.a)
    self.b_log = math.log10(self.b)
    return (self.a_log, self.b_log)

  def add_log(self):
    self.log_add = self.a_log + self.b_log
    return self.log_add

  def log_split(self):
    self.log_c = self.log_add // 1
    self.log_m = self.log_add % 1
    return(self.log_c, self.log_m)

  def result(self):
    self.ex_m = 10 ** self.log_m
    self.ex_v = 10 ** self.log_c
    self.log_res = self.ex_m * self.ex_v
    return self.log_res

lg = Logs(34,54)
#print(lg.apply_log())
#print(lg.add_log())
#print(lg.log_split())
print(lg.result())

当我取消所有print语句的注释并同时运行它们时,程序运行得很好。但是,如果我只想打印实例的结果并注释掉其他三个print语句,则会抛出一个错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "python", line 33, in <module>
  File "python", line 24, in result
AttributeError: 'Logs' object has no attribute 'log_m'

我不明白为什么在打印每个方法的结果时它会起作用,或者为什么这会影响程序的运行方式。

现在我还要说,这是我第一次使用类(程序的重点是练习创建类),所以我认为错误出在我创建它的方式上。

任何帮助都将不胜感激!

谢谢

EN

回答 3

Stack Overflow用户

发布于 2017-03-13 21:19:44

它必须抛出AttributeError,因为log_m是在log_split方法中初始化的,并在result方法中使用。如果您在没有调用log_split的情况下调用result,则未定义log_m,并且您将看到所看到的错误。这个类的设计方式是,只有在log_split之后才能调用result

票数 4
EN

Stack Overflow用户

发布于 2017-03-13 21:21:58

log_m是log_split(self)函数中的一个局部变量。

因此,在result(self)函数中,log_m和log_c是函数未知的两个变量。

所以你必须先运行log_split(),然后再运行result()。

票数 0
EN

Stack Overflow用户

发布于 2017-03-13 21:26:50

log_m的值是在log_split方法中初始化的,它依赖于在add_log方法中初始化的log_add的值。此外,log_add依赖于在apply_log方法中初始化的a_logb_log的值。因此,当您注释方法的所有三个实现时,它会显示AttributeError。你必须保持方法调用的顺序,否则注释任何一个方法都会导致错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42764614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档