class类初始化之后调用赋值问题记录
class PWSTRDELL:def __init__(self, pw_str):#该方法在类实例化时会自动调用self.pw = pw_strself.strength_level = 0#通过初始化函数从外部传入def pw_str_process(self):#这里不用在传入password,直接用self.pw就可以了if len(self.pw)>=8:self.strength_level +=1else:print("密码至少8位")if self.pw_hasnumer():#虽然需要处理self.pw,但不必须要明显传入。因为def函数定义的时候参数是selfself.strength_level +=1else:print("密码至少含1位数字")if self.pw_hasalpha():self.strength_level+=1else:print("密码至少含1位字母")def pw_hasnumer(self):has_number = Falsefor i in self.pw:if i.isnumeric():has_number = Truebreakreturn has_numberdef pw_hasalpha(self):has_alpha = Falsefor i in self.pw:if i.isalpha():has_alpha = Truebreakreturn has_alphaclass FILETOOL:def __init__(self, path, line):self.filepath = pathself.line = line#"密码:{},强度:{},密码强度级别:{}\n".format(pw_str, pw_strong,pw_strong_word(pw_strong))def write_file(self):f = open(self.filepath, "a")f.write(self.line)f.close()def read_file(self):f = open(self.filepath,"r")lines= f.readlines()f.close()return lines def main():x = 5path ="pwd_03.txt"line=""file_process = FILETOOL(path, line)while x > 0:pw_str = input("请输入密码-需包含至少8位,由字母数字组成的密码")#实例化class类的对象,传入参数,初始化类pw_tool = PWSTRDELL(pw_str)#类的初始化函数要求一个输入,所以这里需要输入一个函数#类初始化之后开始调用类的处理 pw_tool.pw_str_process()print("输入密码{}的密码强度为{},".format(pw_str,pw_tool.strength_level))line = "输入密码{}的密码强度为{},".format(pw_str,pw_tool.strength_level)file_process.write_file()if pw_tool.strength_level>=3:print("恭喜,密码设置成功")breakelse:print("密码不符合要求,请重新设置\n")x -= 1else:print("尝试次数太多,请稍后再试")print(file_process.read_file()) if __name__=="__main__":main()
上面这段代码里,write的内容是空的,因为初始化的时候line写了是空字符串,虽然下面line重新赋值了,但是并没有改变类里line的值
上述line那行,需要改成
file_process.line = "输入密码{}的密码强度为{}\n".format(pw_str,pw_tool.strength_level) 这样才会写入值 或者用下面的方法:class定义时去掉line,只在方法内引入line
class PWSTRDELL:def __init__(self, pw_str):#该方法在类实例化时会自动调用self.pw = pw_strself.strength_level = 0#通过初始化函数从外部传入def pw_str_process(self):#这里不用在传入password,直接用self.pw就可以了if len(self.pw)>=8:self.strength_level +=1else:print("密码至少8位")if self.pw_hasnumer():#虽然需要处理self.pw,但不必须要明显传入。因为def函数定义的时候参数是selfself.strength_level +=1else:print("密码至少含1位数字")if self.pw_hasalpha():self.strength_level+=1else:print("密码至少含1位字母")def pw_hasnumer(self):has_number = Falsefor i in self.pw:if i.isnumeric():has_number = Truebreakreturn has_numberdef pw_hasalpha(self):has_alpha = Falsefor i in self.pw:if i.isalpha():has_alpha = Truebreakreturn has_alphaclass FILETOOL:def __init__(self, path):self.filepath = path#self.line = line#"密码:{},强度:{},密码强度级别:{}\n".format(pw_str, pw_strong,pw_strong_word(pw_strong))def write_file(self, line):#写入的line不是类的属性,而是这个方法需要写入linef = open(self.filepath, "a")f.write(line)f.close()def read_file(self):f = open(self.filepath,"r")lines= f.readlines()f.close()return lines def main():x = 5path ="pwd_03.txt"line=""file_process = FILETOOL(path)while x > 0:pw_str = input("请输入密码-需包含至少8位,由字母数字组成的密码")#实例化class类的对象,传入参数,初始化类pw_tool = PWSTRDELL(pw_str)#类的初始化函数要求一个输入,所以这里需要输入一个函数#类初始化之后开始调用类的处理 pw_tool.pw_str_process()print("输入密码{}的密码强度为{}\n".format(pw_str,pw_tool.strength_level))line = "输入密码{}的密码强度为{}\n".format(pw_str,pw_tool.strength_level)#file_process.line = "输入密码{}的密码强度为{}\n".format(pw_str,pw_tool.strength_level) file_process.write_file(line)if pw_tool.strength_level>=3:print("恭喜,密码设置成功")breakelse:print("密码不符合要求,请重新设置\n")x -= 1else:print("尝试次数太多,请稍后再试")print(file_process.read_file()) if __name__=="__main__":main()
转载于:https://www.cnblogs.com/qiu-1010/p/10672183.html
class类初始化之后调用赋值问题记录相关推荐
- Java类初始化顺序(变量赋值与静态代码块的执行时间)
前言:最近写代码的时候经常见到见到static代码块,不由对static的执行时间产生了兴趣,进而对类初始化顺序产生了兴趣. 类从编译到执行的过程: 在使用ClassLoader将字节码转换为JVM中 ...
- java初始化实例化_Java 类初始化和实例化以及多态理解
前言 本篇主要讲解了类的初始化.实例化.静态代码块.构造器.getClass().super.this 等相关的知识点,做一个总结. demo 老规矩,看代码: Father.java public ...
- 创建一个Dog类,初始化构造方法具有name和age属性。Dog类具有坐和打滚的方法。请编写相应的类并创建对象调用该类。
创建一个Dog类,初始化构造方法具有name和age属性.Dog类具有坐和打滚的方法.请编写相应的类并创建对象调用该类. class Dog(object):def __init__(self,nam ...
- 【Java4】实例初始化,类初始化,/接口,多态,final/static,权限修饰符/native
文章目录 1.实例初始化过程:有几个构造器,就会有几个实例初始化方法 2.实例初始化和类初始化结合:先类(静态)后实 3.接口:只有abstract可省 3.1 鸟类案例:Flyable相当于父类的一 ...
- Java必突-JVM知识专题(一): Java代码是如何跑起来的+类加载到使用的过程+类从加载到使用核心阶段(类初始化)+类加载的层级结构+什么是JVM的内存区域划分?Java虚拟机栈、Java堆内存
前言: 该章节知识点梳理:本文主要是入门和了解jvm,不做深入 1.Java代码是如何运行起来的? 2.类加载到使用的过程? 3.验证准备和初始化的过程? 4.类从加载到使用核心阶段:初始化.类加载器 ...
- 从jvm角度看懂类初始化、方法重写、重载。
类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期.如下图 类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段.我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试 ...
- 假笨说-类初始化死锁导致线程被打爆!打爆!爆!
概述 之前写过关于类加载死锁的文章,消失的死锁,说的是类加载过程中发生的死锁,我们从线程dump里完全看不出死锁的迹象,但是确实发生了死锁,没了解的建议看看我前面的那篇文章 本文要说的是另外一个问题, ...
- 一步搞清楚多态与类初始化的底层原理
首先我们先看一个段非常有代表性的代码,里面一口气牵扯到了多态和类初始化顺序知识. public class Test {public static void main(String[] args) { ...
- 单例设计模式-静态内部类-基于类初始化的延迟加载解决方案及原理解析
刚刚线程1看不到线程0的重排序,我们创建一个类,这个方案是使用静态内部类来解决,一会我们也会分析一下原理,我们创建一个静态内部类,静态内部类的代理模式,JVM在类的初始化阶段,也就是class被加载后 ...
最新文章
- java maven项目使用sonar审核代码
- 使用Response.Redirect 两种方法打开一个新窗口
- 关于鼠标移动太快导致moseleave事件不触发的问题
- Windows登录类型知多少?
- python的web抓取_python实现从web抓取文档的方法
- iOS开发之APP内部切换语言
- [C++11]弱引用智能指针weak_ptr初始化和相关的操作函数
- 从像素坐标到相机坐标_多视图几何基础——深入理解相机内外参数
- pycharm+python3.7+pyqt配置_Python3+Pycharm+PyQt5环境搭建步骤图文详解
- 车险受益人变更需要什么资料?
- 关于Vue使用es6模板字符串没反应的问题
- st58服务器装系统,联想 Thinksystem ST58服务器介绍
- html2canvas解决图片空白,网络图片跨域
- mysql 双机热备 原理,MySQL双机热备份的配置及原理
- 传苹果或推出安卓版iTunes音乐商店
- 机器人总动员cp图_阿尔法蛋冠名《人偶总动员4》 牵手高天鹤萌翻全场
- MySQL中对敏感字段值进行加密存储
- C++界面开发框架Qt新手入门指南 - 如何创建Qt Quick UI项目
- pip install scrapy 报错:缺少Twisted 解决办法 :error: Microsoft Visual C++ 14.0 is required
- android viewPage 打造3d画廊
热门文章
- 【html】【19】高级篇--大事件时间轴
- WinForm窗体自适应分辨率
- POJ 1088----滑雪(DP)
- 第五届省赛(软件类)真题----Java大学B组答案及解析
- linux权限源码分析,Linux基础之文件权限详解
- Linux的开源免费办公软件,开源免费Office办公套件(LibreOffice)
- 快捷登录PHP,phpcms 微信快捷登陆
- Golang——延迟调用defer
- Java异常持久化,Log4j进行日志的数据库持久化,说SQL语法异常。
- MySQL后初次密码_mysql第一次安装成功后初始化密码操作步骤