XZR1101 发表于 2021-8-17 11:31:32

出现AttributeErro的原因

代码如下 来自零基础学python
import time as t

class timer():
   
    def __init__(self):
      self.unit = ['年','月','日','小时','分钟','秒']
      self.prompt = '未开始计时'
      self.lasted = []
      self.begin =0
      self.end = 0

    def __str__(self):
      return self.prompt
   
    __reper__=__str__
   
    def __add__(self, other):
      prompt = '总共运行了'
      result= []
      for index in range(6):
            result.append(self.lasted+other.lasted)
            if result:
                prompt+=(str(result)+ self,unit)
      return prompt      
    def start(self):
      self.begin = t.localtime()
      self.prompt = '请调用stop停止计时'
      print('计时开始')
      
    def stop(self):
      if not self.begin:
            print("请调用start开始计时")
      self.end = t.localtime()
      self._calc()
      print('计时结束')

    def _calc(self):
      self.lasted = []
      self.prompt = '总共运行了'
      for index in range(6):
            self.lasted.append(self.end-self.begin)
            if lasted:
                self.prompt+=(str(self.lasted)+self.unit)
      self.begin = 0
      self.end = 0


以下是报错
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
    t.start()
File "C:/Users/xiaozerong/Desktop/Python/类的运用.py", line 26, in start
    self.begin = t.localtime()
AttributeError: 'timer' object has no attribute 'localtime'

为什么会报错?使用的是python3.8

louxinghao 发表于 2021-8-17 11:41:44

你把 time 模块命名为 t
然后肯定又定义了一个 t = timer()
所以才报这个错误
换个别的变量名,就不会报错了
aaa = timer()
aaa.start()

白two 发表于 2021-8-17 13:40:28

本帖最后由 白two 于 2021-8-17 13:46 编辑

仔细看报错:

Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
    t.start()
File "C:/Users/xiaozerong/Desktop/Python/类的运用.py", line 26, in start
    self.begin = t.localtime()
AttributeError: 'timer' object has no attribute 'localtime'

你看哈,第六行写的,属性错误, timer 这个对象没有 localtime 这个 attribute ,属于是实例对象和模块重名了.
你后面实例化的那个 t ,把开始导入的time模块那个 t 给覆盖了,而你 timer 类又没有写 localtime 这个属性,像 time 这种模块没必要重新命名哈.
以后注意一点,尤其模块间的重名必须得注意!
页: [1]
查看完整版本: 出现AttributeErro的原因