如何在python中打印属性。这是印刷地点。但我需要打印'';25“;
它应该打印一个数字,而不是位置如何在python中打印属性。这是印刷地点。但我需要打印'';25“;,python,Python,它应该打印一个数字,而不是位置 a=25 class me: def it(a): print(a) m=me() m.it() 我应该得到25,但我得到-这应该是类,a必须在类内,我定义set/get方法 class me: def __init__(self, a): self.a = a def set_a(self, v): self.a = v def get_a(self):
a=25
class me:
def it(a):
print(a)
m=me()
m.it()
我应该得到25,但我得到-
这应该是类,a必须在类内,我定义set/get方法
class me:
def __init__(self, a):
self.a = a
def set_a(self, v):
self.a = v
def get_a(self):
return self.a
m = me(5)
m.get_a()
m.set_a(12)
m.get_a()
输出
5
12
在您的情况下,it
方法被视为实例方法
,对于实例方法
,第一个参数始终是实例(self
)。因此,当您打印(a)
时,它是打印实例的位置,而不是打印变量a
的值
您可以将it
方法声明为静态,如下所示
a=25
class me:
@staticmethod
def it():
print(a)
m=me()
m.it()
或者你可以
a=25
class me:
def it(self):
print(a)
m=me()
m.it()
你们班没有安眠药。“A”只是一个全局变量,放在类
定义它(self):
将A更改为self以修复引用。对于我来说,问题不清楚。OP似乎缺少一些关于类的一般知识。使用第一个get\u a
可以访问class属性a
。然后使用set\u a
设置实例属性a
,然后检索实例属性。为什么要混合类属性和实例属性?@Matthias我不明白你的意思,类属性是我的属性,我什么都不混合。仅设置一个指定值。你能建议改变吗?pd:作为一个完整的类,我也错过了init函数,因为您的第一个get_a
访问me.a
。然后使用set_a
设置m.a
(而me.a
仍然存在)。第二个get_a
访问现有的实例属性m.a
。我觉得你应该重温一下你对两者区别的认识。引用文档:“一般来说,实例变量用于每个实例的唯一数据,类变量用于类的所有实例共享的属性和方法”