面向对象时遇见的属性错误(AttributeError)

从teacher.py文件中运行是正常运行的

当调用到bin文件夹下的start.py文件下运行时出现属性错误

错误的源码:

# teacher.py
# _*_coding:utf-8_*_
import os
import pickle

class Path:
    teacher_path = "%s\\log" % os.path.dirname(os.getcwd())

class Teacher:
    def __init__(self, name, age, phone):
        self.name = name
        self.age = age
        self.phone = phone

    def look_teacher(self):
        teacher_list = """姓名:%s\n年龄:%s\n手机号:%s
        """ % (self.name, self.age, self.phone)
        print(teacher_list)

    def write_text(self):
        teacher_path = "%s\\%s" % (Path.teacher_path, self.name)
        with open(teacher_path, "wb") as f:
            pickle.dump(self, f)

def read_file(word_one):
    student_bool = False
    teacher_bool = False
    while True:
        for i_text_one in os.listdir(Path.teacher_path):
            text_path = "%s\\%s" % (Path.teacher_path, i_text_one)
            with open(text_path, "rb") as f:
                text_word = pickle.load(f)
            if text_word.phone == word_one:
                st_obj = text_word
                teacher_bool = True
        if student_bool or teacher_bool:
            print("%s已创建过" % st_obj.name)
            no_write_bool = True
        else:
            no_write_bool = False
        break
    return no_write_bool

def run_teacher():
    while True:
        name = input("name:")
        age = int(input("age:"))
        phone = int(input("phone:"))
        t_bool = read_file(phone)
        if not t_bool:
            Teacher(name, age, phone).write_text()
            print("\033[1;34m%s创建成功\033[0m" % name)
        else:
            print("\033[1;34m%s已创建\033[0m" % name)

if __name__ == ‘__main__‘:
    run_teacher()

# start.py

# _*_coding:utf-8_*_
from core import teacher

if __name__ == ‘__main__‘:
    teacher.run_teacher()

改正后的源码:

# teacher.py

# _*_coding:utf-8_*_
import os
import pickle

class Path:
    teacher_path = "%s\\log" % os.path.dirname(os.getcwd())

class Teacher:
    def __init__(self, name, age, phone):
        self.name = name
        self.age = age
        self.phone = phone

    def look_teacher(self):
        teacher_list = """姓名:%s\n年龄:%s\n手机号:%s
        """ % (self.name, self.age, self.phone)
        print(teacher_list)

    def write_text(self):
        teacher_path = "%s\\%s" % (Path.teacher_path, self.name)
        with open(teacher_path, "wb") as f:
            pickle.dump(self, f)

def read_file(word_one):
    student_bool = False
    teacher_bool = False
    while True:
        for i_text_one in os.listdir(Path.teacher_path):
            text_path = "%s\\%s" % (Path.teacher_path, i_text_one)
            with open(text_path, "rb") as f:
                text_word = pickle.load(f)
            if text_word.phone == word_one:
                st_obj = text_word
                teacher_bool = True
        if student_bool or teacher_bool:
            print("%s已创建过" % st_obj.name)
            no_write_bool = True
        else:
            no_write_bool = False
        break
    return no_write_bool

def run_teacher():
    while True:
        name = input("name:")
        age = int(input("age:"))
        phone = int(input("phone:"))
        t_bool = read_file(phone)
        if not t_bool:
            Teacher(name, age, phone).write_text()
            print("\033[1;34m%s创建成功\033[0m" % name)
        else:
            print("\033[1;34m%s已创建\033[0m" % name)

if __name__ == ‘__main__‘:
    run_teacher()

# start.py

# _*_coding:utf-8_*_
from core.teacher import Teacher
from core import teacher

if __name__ == ‘__main__‘:
    teacher.run_teacher()

总结:当在写入文件内用到新建类的属性时,需要在运行代码.py文件内调用类的名称,不管是否用这个新建类,否则在程序运行中会出现AttributeError: Can‘t get attribute “类名称的错误”

原文地址:https://www.cnblogs.com/pengingintent/p/11141297.html

时间: 2024-10-11 21:43:27

面向对象时遇见的属性错误(AttributeError)的相关文章

启动 WLS 时的身份验证错误(解决linux下问题)

故障排除请注意,并非下面所有任务都需要完成.有些问题仅通过执行几项任务就可以解决. 快速链接 为什么发生此问题? 启动身份无效(WLS 7.0 和 WLS 8.1) 内嵌的 LDAP:丢失管理密码(WLS 7.0 和 WLS 8.1) 内嵌的 LDAP:更改管理密码后被管服务器不启动(WLS 7.0 和 WLS 8.1) WebLogic 服务器与 LDAP 服务器连接失败(WLS 7.0 和 WLS 8.1) LDAP 服务器:连接错误(WLS 7.0 和 WLS 8.1) LDAP 服务器:

asp.net中当服务器出错时显示指定的错误页面

http://blog.csdn.net/helloxiaoyu/article/details/2943537 此篇文章描述了当异常再ASP.NET中发生时怎样使用C#.NET代码去拦截和相应异常.ASP.NET在异常处理方面比传统的ASP更优越.在ASP.NET中,允许在应用程序的各个层面中处理异常.ASP.NET的新特性ASP.NET为捕获并处理异常提供了更多的便利.在传统的ASP程序中,我们用“On Error Resume Next”(或Jscript的Try-catch)来处理异常.

DIV CSS制作网页时易犯的错误总结

CSS+DIV是网站标准(或称"WEB标准")中常用的术语之一,通常 为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用css+div的 方式实现各种定位.应用应用DIV+CSS编码时很容易犯一些错误.本文列举了一些常见的错误: 1. 检查HTML元素是否有拼写错误.是否忘记结束标记 Webjx.Com 即使是老手也经常会弄错div的嵌套关系.可以用dreamweaver的验证功能检查一下有无错误. 网页教学

numeric 转换为数据类型 (null) 时出现算术溢出错误

mssql数据同步到mysql时提示错误如下: 消息 8115,级别 16,状态 14,第 1 行 将 numeric 转换为数据类型 (null) 时出现算术溢出错误 问题分析如下: 1.数据字段类型限制超出最小最大值 2.mysql字段属性有个“unsigned”限制, 非负数

dedecms新建内容模型“把数据保存到数据库附加表时出错‘xxx’出错”错误的原因分析和解决方案(转)

把数据保存到数据库附加表 `bc_addonarticle17` 时出错,请把相关信息提交给DedeCms官方.INSERT INTO `bc_addonarticle17`(aid,typeid,redirecturl,templet,userip,body, ) Values( 11 , 11 , , , 127 0 0 1, )You have an error in your 今天在使用dedecms之梦系统进行建站的时候,使用新创建的自定义内容模型来添加文章的时候出现了错误,错误描述如

ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法

偶原来的用ASP.NET生成验证码图片时用的是JPG格式,今天想把它改成PNG格式的,结果就出现GDI+一般性错误,查了N久资料,才发现解决的办法,对分享此解决办法的网友深表感谢 Response.Clear();Response.ContentType = "image/PNG";img.Save(Response.OutputStream, ChartFormat.Png);竟然出现异常,是GDI+一般性错误.但是如果格式是Response.ContentType = "

COM组件DLL引用时出现检索组件错误

前情提要: 市面上有一套系统软件,其中某个功能的程序是使用COM组件开发的,我希望使用它的这个功能,所有我引用了他的COM组件DLL. 但是程序执行时出现了一个错误,错误如下图: 这个错误一般都是我们引用的COM组件没有注册引起的.但是当我使用regedit命令去注册组件时,总是无法注册报了一个错误 使用regsvr32.dll注册时出现这个问题. 我把这个程序拿到另一台电脑上使用时,没有报错,能够正常的运行,那台点脑安装了原版的程序.所以没有报这个错误. 因为单独注册dll没有成功,我只能采用

(转)金蝶KIS迷你版、标准版在查询数量金额明细账时提示“发生未知错误,系统当前操作被取消,请与金蝶公司联系”

金蝶KIS迷你版.标准版在查询数量金额明细账时提示“发生未知错误,系统当前操作被取消,请与金蝶公司联系” 2013-07-10 12:17:51|  分类: 金蝶专题|举报|字号 订阅 金蝶KIS迷你版.标准版在查询数量金额明细账时提示“发生未知错误,系统当前操作被取消,请与金蝶公司的技术支持机构联系” 问题描述:厦门金蝶KIS迷你版.标准版在查询数量金额明细账时提示“发生未知错误,系统当前操作被取消,请与金蝶公司的技术支持机构联系”.但是选择“确定”后仍然可以查询到数据.问题原因: GLQty

在向server发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的还有一端上无不论什么进程。

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/36425825 SQL Server 2008 + VS2010 用C#编写的代码,进行数据库还原的时候,出错: 错误内容: 在向server发送请求时发生传输级错误. (provider: 共享内存提供程序, error: 0 - 管道的还有一端上无不论什么进程. 解决方法: 将SQL链接语句构造成例如以下: string strLink = @"server=.;datab