Python 访问和检查对象的属性';例如,像一个;用户名";属性在一个";“用户”;用于登录页面的对象
我创建了一个类,其参数是用户输入,属性作为字典保存到一个带有json的文件中,由python重新读取。现在,我希望能够从单独的文件访问该文件中的信息(“用户名”属性)。如果用户名匹配,则您成功登录。 文件名:创建用户数据集Python 访问和检查对象的属性';例如,像一个;用户名";属性在一个";“用户”;用于登录页面的对象,python,json,python-3.x,Python,Json,Python 3.x,我创建了一个类,其参数是用户输入,属性作为字典保存到一个带有json的文件中,由python重新读取。现在,我希望能够从单独的文件访问该文件中的信息(“用户名”属性)。如果用户名匹配,则您成功登录。 文件名:创建用户数据集 """THIS PROGRAM CREATES A USER AND SIMPLY STORES ITS INFO IN A TXT FILE TO BE RE-READ BY PYTHON""" from pip._vendor.distlib.compat import
"""THIS PROGRAM CREATES A USER AND SIMPLY STORES ITS INFO IN A TXT FILE TO BE RE-READ BY PYTHON"""
from pip._vendor.distlib.compat import raw_input
import json
class User():
'''simulates a user for a social network or pc'''
def __init__(self, first_name, last_name, username, location, *interests):
'''initialize attributes of user class'''
self.first_name = first_name.title()
self.last_name = last_name.title()
self.username = username
self.location = location.title()
self.interests = interests
@classmethod
def get_userinfo(cls):
'''creates a variable to store user inputs that correspond to User attributes'''
first = raw_input("Welcome. PLease Enter Your First Name: ")
last = raw_input("Please Enter Your Last Name: ")
user = raw_input("Username: ")
location = raw_input("What is your location? : ")
interests = []
print("List some of your interests (Press 'Q' Key to End Program.)")
active = True
while active:
'''infinite loop that creates elements in a list until user quits'''
interest = input().strip()
if interest == 'q':
active = False
else:
interests.append(interest)
print("Press 'Q' Key to End Program.")
return cls(first, last, user, location, interests)
"""cls fills in the attributes that would go inside of a given User instance"""
def to_json(self):
return json.dumps({"first": self.first_name, "last": self.last_name, "username": self.username,
"location": self.location, "interests": self.interests})
@classmethod
def from_json(cls, j):
dct = json.loads(j)
return cls(dct["first"], dct["last"], dct["username"], dct["location"], dct["interests"])
第二个文件只是创建User:
文件名:创建用户前端
"""THIS PROGRAM CREATES INSTANCES OF USER AND STORES THEIR INFO IN A FILE"""
from create_user_dataset import User
def create(user):
'''creates an instance of User object'''
filename = r'''C:\Users\User\Documents\dataset1.txt'''
with open(filename, 'r+') as f:
'''writes each attribute of User into a file'''
f.write(user.get_userinfo().to_json())
user1 = User
create(user1)
之前的所有作品都非常完美,我只是想提供背景。第三个文件就是问题所在。问题是,当我创建一个新文件时,在导入存储我的用户实例的文件时,console只运行导入的文件,而不是文件本身。
文件名:用户登录
import create_user_frontend as cu
prompt_username = input("Please enter username: ")
print(cu.user1)
导入时将执行
create\u user\u frontend.py
中的此代码:
user1 = User
create(user1)
如果您不希望在导入文件时执行它,但仅当文件本身运行时(例如,通过调用python create\u user\u frontend.py
),您应该将其更改为:
if __name__ == "__main__:
user1 = User
create(user1)
顺便说一句,这不会解决你所有的问题,只解决你问的问题 您仍有许多问题需要处理:
- 更改后,
不再可用cu.user1
- 另一方面,
实际上只是cu.user1
,因为这条可疑的线create\u user\u dataset.user
user1=user
- 函数
只接收他create(user)
类,所以它接收任何东西都是没有意义的user
- 您可能需要调用
来实际创建用户实例User.get_userinfo()
- 您肯定应该更改这些函数的名称或其功能,因为名称与它们的功能不匹配:
不获取用户信息-它创建一个User.get\u userinfo
实例User
既不将用户实例作为参数,也不返回新用户-它创建一个用户实例,将其内容转储到json中,然后在同一行中丢弃该实例create(user)
创建用户前端.py中的此代码:
user1 = User
create(user1)
如果您不希望在导入文件时执行它,但仅当文件本身运行时(例如,通过调用python create\u user\u frontend.py
),您应该将其更改为:
if __name__ == "__main__:
user1 = User
create(user1)
顺便说一句,这不会解决你所有的问题,只解决你问的问题
您仍有许多问题需要处理:
- 更改后,
cu.user1
不再可用
- 另一方面,
cu.user1
实际上只是create\u user\u dataset.user
,因为这条可疑的线user1=user
- 函数
create(user)
只接收他user
类,所以它接收任何东西都是没有意义的
- 您可能需要调用
User.get_userinfo()
来实际创建用户实例
- 您肯定应该更改这些函数的名称或其功能,因为名称与它们的功能不匹配:
User.get\u userinfo
不获取用户信息-它创建一个User
实例
create(user)
既不将用户实例作为参数,也不返回新用户-它创建一个用户实例,将其内容转储到json中,然后在同一行中丢弃该实例
是的!这很有效。现在,我如何创建一个“登录页面”,检查用户名?那么如何使cu.user1可用?或者更确切地说,我如何访问username参数并检查它?@GilbertoRoblesSilva我想您需要实现以下功能:从文件名(filename)
(returnsa auser
),将用户写入文件名(filename,user)
(不返回任何内容),然后从主脚本使用这些功能,例如,user1=从文件(filename1)读取用户。
。是!这很有效。现在,我如何创建一个“登录页面”,检查用户名?那么如何使cu.user1可用?或者更确切地说,我如何访问username参数并检查它?@GilbertoRoblesSilva我想您需要实现以下功能:从文件名(filename)
(returnsa auser
),将用户写入文件名(filename,user)
(不返回任何内容),然后从主脚本使用这些功能,例如,user1=从文件(filename1)读取用户。