class类初始化之后调用赋值问题记录
class PWSTRDELL:
def __init__(self, pw_str):#该方法在类实例化时会自动调用
self.pw = pw_str
self.strength_level = 0
#通过初始化函数从外部传入
def pw_str_process(self):
#这里不用在传入password,直接用self.pw就可以了
if len(self.pw)>=8:
self.strength_level +=1
else:
print("密码至少8位") if self.pw_hasnumer():#虽然需要处理self.pw,但不必须要明显传入。因为def函数定义的时候参数是self
self.strength_level +=1
else:
print("密码至少含1位数字") if self.pw_hasalpha():
self.strength_level+=1
else:
print("密码至少含1位字母")
def pw_hasnumer(self):
has_number = False
for i in self.pw:
if i.isnumeric():
has_number = True
break
return has_number
def pw_hasalpha(self):
has_alpha = False
for i in self.pw:
if i.isalpha():
has_alpha = True
break
return has_alpha class FILETOOL:
def __init__(self, path, line):
self.filepath = path
self.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 = 5
path ="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("恭喜,密码设置成功")
break
else:
print("密码不符合要求,请重新设置\n")
x -= 1 else:
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_str
self.strength_level = 0
#通过初始化函数从外部传入
def pw_str_process(self):
#这里不用在传入password,直接用self.pw就可以了
if len(self.pw)>=8:
self.strength_level +=1
else:
print("密码至少8位") if self.pw_hasnumer():#虽然需要处理self.pw,但不必须要明显传入。因为def函数定义的时候参数是self
self.strength_level +=1
else:
print("密码至少含1位数字") if self.pw_hasalpha():
self.strength_level+=1
else:
print("密码至少含1位字母")
def pw_hasnumer(self):
has_number = False
for i in self.pw:
if i.isnumeric():
has_number = True
break
return has_number
def pw_hasalpha(self):
has_alpha = False
for i in self.pw:
if i.isalpha():
has_alpha = True
break
return has_alpha class 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不是类的属性,而是这个方法需要写入line
f = 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 = 5
path ="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("恭喜,密码设置成功")
break
else:
print("密码不符合要求,请重新设置\n")
x -= 1 else:
print("尝试次数太多,请稍后再试") print(file_process.read_file())
if __name__=="__main__":
main()
class类初始化之后调用赋值问题记录的更多相关文章
- 经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能
说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后, ...
- Java类初始化
Java类初始化 成员变量的初始化和构造器 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值 对于 char.short.byte.int.long.float. ...
- C++与C#对比学习:类初始化
类和柏拉图的理念世界 我们知道面向对象编程中到处是一个个的类,但类只是个概念性的东西,不是个实体,不占内存,你没实例化之前也不能用它.只有把类实例化成一个对象后,它才是一个真正存在的实体.占有内存,能 ...
- 【c++】必须在类初始化列表中初始化的几种情况
转自:http://www.cnblogs.com/kaituorensheng/p/3477630.html 1. 类成员为const类型 2. 类成员为引用类型 #include <iost ...
- [读书笔记] java类初始化
以下内容来自周志明的<深入理解java虚拟机>: 类初始化阶段是类加载过程的最后一步,前面的类加载过程中,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导 ...
- C++:基类与派生类对象之间的赋值兼容关系
4.5 基类与派生类对象之间的赋值兼容关系 在一定条件下,不同类型的数据之间可以进行类型转换,例如可以将整型数据赋给双精度型变量. 在赋值之前,先把整型数据转换为双精度型数据,然后再把它双精度型变量. ...
- C++构造函数初始化列表与赋值
C++中类的初始化操作一般有四个部分组成: 1.构造函数初始化列表 2.构造函数体内赋值 3.类外部初始化 4.类声明时直接赋值 对于内部数据类型(char,int,float...),构造函数初始化 ...
- 从jvm角度看懂类初始化、方法重写、重载。
类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期.如下图 类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段.我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试 ...
- java类加载及类初始化
1.前言 java是跨平台语言,主要是因为它的java虚拟机的存在,java有事编译语言,所以需要将编写的java文件编译成jvm可运用的class字节码文件.在java中一切皆对象.对于Java虚拟 ...
随机推荐
- 迷宫问题 (bfs广度优先搜索记录路径)
问题描述: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...
- mysql的执行过程
1 总流程 https://www.cnblogs.com/annsshadow/p/5037667.html 2 优化器 https://www.cnblogs.com/olinux/p/5 ...
- 如何共享联盟cookie
接上一篇阿里妈妈账号登录状态如何长时间保存 既然我们获取到了cookie, 如果有多个程序都要使用到联盟帐号的时候, 如果不共享cookie, 那么每个程序都需要登录一次, 真的很浪费资源. 如何共享 ...
- Spring boot 源码分析(前言)
开坑达人 & 断更达人的我又回来了 翻译的坑还没填完,这次再开个新坑= = 嗯,spring boot的源码分析 本坑不打算教你怎么用spring boot = = 也不打算跟你讲这玩意多方便 ...
- 【SparkStreaming学习之一】 SparkStreaming初识
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- 解析搜狗实验室精简版数据:1、批量将.txt编码格式转化为utf8 2、解析提取数据
在搜狗实验室里下载了精简版的数据,解压后是一个文件,里面有很多个.txt文档,里面编码格式都是ASCII.现需要将这些编码格式转化为utf-8,以下是python3语言编写的脚本,一般只需改变path ...
- qt手写输入法资料
论文: https://max.book118.com/html/2015/1229/32204490.shtm 开源库: zinna Linux下使用的Tegaki就是使用的这个库 csdn博客资料 ...
- Oarcle之单行函数(下)
1.字符函数 ltrim 去除字符串左边指定字符,如果不设定第二个参数,则默认去除空格 rtrim去除字符串右边指定字符,如果不设定第二个参数,则默认去除空格 例如:select ltrim (‘a ...
- python generator用法
转自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868196510 ...
- 【ubuntu】-桌面假死的解决办法
第一,通过ctrl+art+F1(1-6),启动本地终端 切换到了字符界面tty1 第二,查询进程,ps -e |grep tty7 得到tty7的pid号 第三,杀死tty7的进程 , kill 9 ...