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虚拟 ...
随机推荐
- Why ngx-uploader doesn't like to cooperate with .net core 2.x?
The POST action seems to have no effect on the .net core controller. If you put [IgnoreAntiforgeryTo ...
- centos7安装git
1.安装git依赖包 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUti ...
- linux下列出所有连接到你的Server的IP地址
linux下列出所有连接到你的Server的IP地址 最近要做一个检查所有连接到主机的IP的脚本,google到一篇老外写的文章 <List all IP addresses connected ...
- laravel blog edit
模板复制create的模板 主要修改的地方 <form action="{{ url('admin/article/'.$article->id) }}" method ...
- selenium 定位密码软键盘
from selenium import webdriver import time driver = webdriver.Chrome() driver.maximize_window() driv ...
- kibana查询语法 使用教程
1. 使用双引号包起来作为一个短语搜索: "like Gecko" 2. ? 匹配单个字符; * 匹配0到多个字符 例如:kiba?a, el*search ? * 不能用作第一个 ...
- css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位
css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位 height:100vh 一些只能vw, vh才能完成的应用场景: 1. 场景之:元素的尺寸限制 vw vh 主要是 ...
- Spring的事务
事务:事务指的是逻辑上的一组操作,这组操作要么都成功,要么都失败. Transaction事务的四大特性ACID: 1.Atomicity原子性 事务的操作要么都成功,要么都不做,只要有一个失败,就会 ...
- 利用 html js判断 客户端是否安装了某个app 安装了就打开 否则跳转到gp
三种方式 方式一:简单的进行打开app,延时操作若未打开直接跳gp function isInstalled(){ var urlFrag = 'somepars'; var the_href = ' ...
- %zsy %lqs 随感
今天是cj的大毒瘤zsy(对对,您说的都对,题目不难的啦,是我太菜啦)出题. 我校选手lqs仍然坚持高水平的发挥,wzy神犇却不在状态. 面对T1sb题(其实干了2h)和T3的原题(我&lqs ...