Python 如何从另一个类获取变量?
我有以下课程:Python 如何从另一个类获取变量?,python,class,oop,variables,Python,Class,Oop,Variables,我有以下课程: class Login(): #PROMPT THE OPERATOR TO LOGIN def login(self): self.usr = input("usr> ") self.pwd = getpass.getpass("pwd> ") self.check_login() 我也有这门课: class Kernel(Login): #THIS IS WHERE THE OPERATOR
class Login():
#PROMPT THE OPERATOR TO LOGIN
def login(self):
self.usr = input("usr> ")
self.pwd = getpass.getpass("pwd> ")
self.check_login()
我也有这门课:
class Kernel(Login):
#THIS IS WHERE THE OPERATOR CAN ENTER STUFF AND SHIT.
def kernel(self):
obj = Login()
kernel_input = input(obj.login.self.usr + "@" + OS_NAME.lower() + ">")
但是,我不知道如何从类登录中获取变量self.usr来处理类内核,它是类登录的子级
如您所见,我创建了Login()对象并将其存储到变量obj中。在Login类中,有一个名为Login的方法,它保存一个名为usr的自变量
我尝试在另一个类中使用以下命令调用它:
obj.usr
obj.self.usr
obj.login.usr
obj.login.self.usr
但这些都不起作用。
我如何才能做到这一点?只有在调用
登录方法时才会设置usr
属性。您需要调用该函数才能使用obj.login()
设置属性。然后您可以使用obj.usr
访问它
基于内核是Login
的子类这一事实,在Kernel
方法中创建另一个Login
对象可能没有任何好处,您可以调用self.Login()
和self.usr
另外,我猜您可能来自另一种语言,其中具有相同类名的方法是构造函数?Python中不是这种情况,构造函数被称为\uuu init\uu
obj。usr
是正确的方法。但是,在调用login
对象的login
方法之前,该属性将不存在。您需要执行以下操作:
obj = Login()
obj.login()
# now you can use obj.usr
如果不确切地知道类的使用方式(例如,登录对象的登录“应该”发生的时间),就很难确切地知道何时应该调用login()
。另一种可能性是,您实际上希望在登录类的\uuuu init\uuuu
期间设置usr
和pwd
,以便在创建对象后立即存在它们。创建全局定义的dict.ex:
mydict = dict()
class Login():
#PROMPT THE OPERATOR TO LOGIN
def login(self):
self.usr = input("usr> ")
self.pwd = getpass.getpass("pwd> ")
mydict.update({'password':self.pwd, 'user': self.usr})
self.check_login()
class Kernel(Login):
#THIS IS WHERE THE OPERATOR CAN ENTER STUFF AND SHIT.
def kernel(self):
kernel_input = input(mydict['user'] + "@" + OS_NAME.lower() + ">")
在内核实例中创建Login()实例似乎有些奇怪,因为内核已经将Login子类化了(因此它具有与登录实例相同的方法和属性,而不必调用Login()基类通常是“is-a”关系。内核
是一个登录
?相反,内核
应该有一个登录
方法。同意这里的Mark。奇怪的设计风格:)