[英]Can we access class method variable using dot notation in python
下面是代码
import os
class ABC:
def test(self,name):
var = 5
var2 = 10
dic = {"Ada": "adada"}
print "asdfdsadv"
var1 = "Ada"
var2 = "asada"
obj = ABC()
print obj.test("Ada").var1
我正在寻找这样的东西。 我可以在 python 中实现这个吗
我知道这是局部到类的 var 变量。 有没有办法通过使用全局或其他东西来实现这一点
从类方法访问变量是不可能的,您必须在类级别设置变量,如下所示:
import os
class ABC:
def test(self,name):
var = 5
var2 = 10
dic = {"Ada": "adada"}
print "asdfdsadv"
self.var1 = "Ada"
var2 = "asada"
obj = ABC()
obj.test('Ada')
print obj.var1
您可以通过将 self 返回到您的测试方法中,将 obj.test('Ada').var1 链接到同一行中。
我认为这会奏效。 init (self) 的行为类似于其他语言中的构造函数。 所以实际上我正在一个类中构建一个类,以使您的最后一行正常工作。 但就像其他人建议的那样,这不是 Python 应该使用的方式。
import os
class ABC(object):
def __init__(self):
pass
class test(object):
def __init__(self,name):
self.var = 5
self.var2 = 10
self.dic = {"Ada": "adada"}
print ("asdfdsadv")
self.var1 = "Ada"
self.var2 = "asada"
if __name__ == "__main__":
obj = ABC()
print (obj.test("Ada").var1)
您正在寻找的是class variables
,通常定义为self.variable
。 这是您的代码示例:
import os
class ABC:
def __init__(self):
self.var = 5
self.var2 = 10
self.dic = {"Ada": "adada"}
self.var1 = "Ada"
def test(self,name):
print self.var
print self.var2
print self.var1 + " " + name
obj = ABC()
print obj.dic # {'Ada': 'adada'}
print obj.dic["Ada"] # adada
obj.test("wow") # 5, 10, Ada wow
obj.var1 = "Ede"
obj.test("wow") # 5, 10, Ede wow
但正如其他答案中所建议的那样,您可能需要退后一步并检查 python 变量的范围是什么
忘记类并考虑一般的函数。
当您定义一个函数时,其范围内的任何变量都是本地的,并且只能从该函数的执行中访问。 一旦执行完成,就是这样,它们就消失了。 这是基本的; 从函数中获取数据的唯一方法是return
它。
虽然它是一个 hack,你可以返回locals()
(局部变量的字典),但这是一个糟糕的做法。
import os
class ABC:
def test(self,name):
var = 5
var2 = 10
dic = {"Ada": "adada"}
print "asdfdsadv"
var1 = "Ada"
var2 = "asada"
return locals()
obj = ABC()
print obj.test("Ada")["var1"]
如果您从函数返回对象本身并且变量不是局部变量而是实例变量,则它可以工作。
class ABC:
def test(self, name):
self.var1 = "My name is {}".format(name)
return self
obj = ABC()
print obj.test('Ada').var1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.