python - 在 __init__function 中获取嵌套变量
问题描述
代码:
类 GmailFarming(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
def StartSeleniumScript():
with open("json/Gmail_farming/Tasks/Tasks.json", "r") as f:
tasksJsonFile = json.load(f)
for task in tasksJsonFile['tasks']:
if task['id'] == 1:
#Get info Needed from json
mode_chosen_to_run = task['mode_chosen']
account_chosen_to_run = task['account_chosen']
#Get account info from selected account
with open("json/Gmail_farming/Profiles/Profiles.json", "r") as acc:
accountsJsonFile = json.load(acc)
for account in accountsJsonFile['accounts']:
if account['id'] == 1:
email_for_account_to_run = account['email']
password_for_account_to_run = account['password']
好的,所以我有这段代码,基本上我要做的是获取email_for_account_to_run和password_for_account_to_run的值(就在底线)。我这样做有困难。我正在尝试从另一个文件中获取这些值,但是对 Python 来说有点陌生,并且仍然对这样的主题感到困惑。任何有关如何从 GmailFarming 类之外获取这些值的帮助都会很棒!在此先感谢,并且 PS,我知道为什么类没有出现在代码块中,但它是类,然后在它下面缩进了 def init !
解决方案
阅读您的代码,我假设您尝试做的是创建一个具有__init__
定义辅助函数的方法的类,在该辅助函数StartSeleniumScript
中您声明两个变量email_for_account_to_run
并password_for_account_to_run
从中恢复类外部的值。
至少我发现您的代码令人困惑,因为:
- 您将面向对象风格的编程与函数式风格混合(相反,您可以创建一个与方法
startSeleniumScript(self)
相同级别的辅助方法,__init__
而不是在其中嵌套函数定义) - 您创建的嵌套函数甚至从未被调用
- 您创建的嵌套函数没有
return
价值 - 该类没有在
__init__
方法中声明的实例变量 - 你永远不会创建类的实例
所有这一切让我对你到底想要做什么感到有点困惑,但这样的事情会起作用:
class GmailFarming:
def __init__(self, parent, controller):
def StartSeleniumScript():
self.foo = 1
self.bar = 2
StartSeleniumScript()
g = GmailFarming(None,None)
print(g.foo)
print(g.bar)
本质上,您self.
在要访问的变量前面添加一个,以便它们成为您可以从外部访问的实例变量。当然,您必须先创建类的对象,然后才能从中获取实例变量。
就个人而言,我会将嵌套函数定义为这样的辅助方法,但是:
class GmailFarming:
def __init__(self, parent, controller):
self.__startSeleniumScript()
def __startSeleniumScript(self):
self.foo = 1
self.bar = 2
g = GmailFarming(None,None)
print(g.foo)
print(g.bar)
推荐阅读
- python - 我是 Python 的学生和新手,我有一个考试题
- c# - 如何设置签名者姓名?
- matlab - 使用 DM320T、Raspberry Pi 3B 和 MATLAB 进行步进电机控制
- angular - Angular intercept catcherror 还会捕获除 404 之外的其他错误,并阻止应用按原样工作
- java - PHONE_STATE 接收器不与基于上下文的接收器一起使用
- python-3.x - 没有使用 python boto3 获取所有 aws 实例 - 保留问题
- swift - 在 SwiftUI 中动态添加元素到 VStack
- bash - 估计大文本文件的大小
- performance - webgl 不能在集成显卡上的一次 drawcall 中绘制太多图元
- ios - IOS 在应用程序拒绝问题 - 指南 2.1 - 性能 - 应用程序完整性