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类初始化之后调用赋值问题记录的更多相关文章

  1. 经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能

    说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后, ...

  2. Java类初始化

    Java类初始化 成员变量的初始化和构造器 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值 对于  char.short.byte.int.long.float. ...

  3. C++与C#对比学习:类初始化

    类和柏拉图的理念世界 我们知道面向对象编程中到处是一个个的类,但类只是个概念性的东西,不是个实体,不占内存,你没实例化之前也不能用它.只有把类实例化成一个对象后,它才是一个真正存在的实体.占有内存,能 ...

  4. 【c++】必须在类初始化列表中初始化的几种情况

    转自:http://www.cnblogs.com/kaituorensheng/p/3477630.html 1. 类成员为const类型 2. 类成员为引用类型 #include <iost ...

  5. [读书笔记] java类初始化

    以下内容来自周志明的<深入理解java虚拟机>: 类初始化阶段是类加载过程的最后一步,前面的类加载过程中,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导 ...

  6. C++:基类与派生类对象之间的赋值兼容关系

    4.5 基类与派生类对象之间的赋值兼容关系 在一定条件下,不同类型的数据之间可以进行类型转换,例如可以将整型数据赋给双精度型变量. 在赋值之前,先把整型数据转换为双精度型数据,然后再把它双精度型变量. ...

  7. C++构造函数初始化列表与赋值

    C++中类的初始化操作一般有四个部分组成: 1.构造函数初始化列表 2.构造函数体内赋值 3.类外部初始化 4.类声明时直接赋值 对于内部数据类型(char,int,float...),构造函数初始化 ...

  8. 从jvm角度看懂类初始化、方法重写、重载。

    类初始化 在讲类的初始化之前,我们先来大概了解一下类的声明周期.如下图 类的声明周期可以分为7个阶段,但今天我们只讲初始化阶段.我们我觉得出来使用和卸载阶段外,初始化阶段是最贴近我们平时学的,也是笔试 ...

  9. java类加载及类初始化

    1.前言 java是跨平台语言,主要是因为它的java虚拟机的存在,java有事编译语言,所以需要将编写的java文件编译成jvm可运用的class字节码文件.在java中一切皆对象.对于Java虚拟 ...

随机推荐

  1. 【速读】——ResNeXt

    Saining——[arXiv2017]Aggregated Residual Transformations for Deep Neural Networks 目录 作者和相关链接 主要思想 Res ...

  2. 用友畅捷通T6数据升级到T+的步骤图解

    1.打开升级工具,输入各项目: 2.点击下一步并确认---“是”: 3.输入目的账套信息(主要是系统管理员密码): 4.升级开始: 5.退出原账套登录的确认----“是”: 6.升级进度: 7.升级成 ...

  3. To My Girlfriend (DP)

    题意:求选中若干个数,满足和为S,且不能选中下表i, j 和选中k, l的情况总数量. 思路:DP[i][j][k][l] i:前i个和为j,选中k个和不选中l个的情况数量,那么我们的转换应该是在必选 ...

  4. python,Day1,基础1

    主要内容 1.python介绍 2.发展史 3.安装 4.hello world程序 5.变量 6.用户输入 7.模块 8.数据类型 9.数据运算 10.if...else语句 11.while循环 ...

  5. Oracle GoldenGate 18.1发布

    软件下载地址:https://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html 文档下载地址: https:/ ...

  6. PHP7.1 mcrypt_module_open() is deprecated

    PHP7.1 mcrypt_module_open() is deprecated 一:函数前添加抑制符 @ mcrypt_module_open....;->@mcrypt_module_op ...

  7. 关于javaweb项目红叉报错可但项目可以正常运行的解决办法

           有时候导入的项目工程,文件夹左下角永远有一个红叉,但是由于不影响程序运行,所以之前一直忽略了,但是强迫症患者表示不解决巨蓝瘦,网上有些方法没有讲清楚,所以今天做了个总结来教大家如何详细解 ...

  8. 0x11栈之Editor

    参考链接:https://blog.csdn.net/SSLGZ_yyc/article/details/81700623 对顶栈的思想: 建立两个栈,栈A存储从序列开头到当前光标的位置的一段序列,栈 ...

  9. yii restful和一般路由共存

    <?php namespace app\controllers; use Yii; use yii\rest\ActiveController; /** * */ class TestContr ...

  10. linux中centros6.7安装php5.6,httpd-2.2.19(web产品化)遇到的问题总结

    前段时间在公司实习,web系统产品化的过程踩了很多坑,在这边总结一下,由于对linux不是很懂,全是自己一步步一个一个问题解决的 1,查看系统中是否安装apache,php,mysql环境 Apach ...