#!/usr/bin/env python
class AA(object):
def __init__(self):
pass
def y(self):
pass
x=AA()
x.y()
当我执行x.y()时,我想打印“这是'x'给我打电话”,我应该怎么做?
答案 0 :(得分:1)
我希望这能解决你的问题
#!/usr/bin/env python
class AA(object):
def __init__(self):
pass
def y(self, name):
self.name = name
print("This is %s call me" % name)
x = AA()
x.y("Tarzan")
答案 1 :(得分:0)
一切都是Python中的一个对象,当你创建一个类的实例时,它会分配内存位置,并且你的x变量会引用内存位置。唯一的对象有内存位置,变量没有任何内存位置。变量只是指对象的内存位置
在您的示例中, X 不仅仅是对您的记忆位置的引用
如果定义变量
a = 2
表示 a 对2
的引用a = 1
表示现在引用1
将一个变量分配给另一个变量会使新标签绑定到相同的值,如下所示。
b = a
表示 a和b 都引用1
python返回内存位置中的id()
print id(a)
print id(b)
<强>输出强>
140621897573617
140621897573617
示例1 :
>>> s1 = 'hello'
>>> s2 = 'hello'
>>> id(s1), id(s2)
(4454725888, 4454725888)
>>> s1 == s2 True
>>> s1 is s2 True
>>> s3 = 'hello, world!'
>>> s4 = 'hello, world!'
>>> id(s3), id(s4) (4454721608, 4454721664)
>>> s3 == s4 True
>>> s3 is s4 False
示例2
>>> class Foo:
... pass
...
>>> bar = Foo()
>>> baz = Foo()
>>> id(bar)
140730612513248
>>> id(baz)
140730612513320
<强>结果强>
对象或实例的名称不仅仅是对内存的引用 位置
答案 2 :(得分:0)
来自@ user1334609的评论:
例如,我们有很多vm实例,vm1 = AA(), vm1.run_cmd(“xxxx”),vm2 = AA(),vm2.run_cmd(“”)我想知道哪个vm 运行一些cmd
要知道哪个VM运行了该命令,您只需使用id(self)
,而不是尝试在代码中查找声明的变量。
您现在可以从哪个vm命令运行中看到两个选项。
选项1:将一个成员变量添加到class。这可以提供可读性。
选项2:使用id
中self
的{{1}}。这可以避免添加额外的变量。
示例代码:
y()
这给出了以下输出:
#!/usr/bin/env python
class AA(object):
def __init__(self, vmname):
self.whoami = vmname
def y(self):
print "My Name is %s " % self.whoami # Option1
print "My Id is %s " % id(self) # Option2
def main():
vm1=AA("Yoda")
vm1.y()
vm2=AA("Boda")
vm2.y()
vm3=AA("Anakin")
vm3.y()
if __name__ == '__main__':
main()
答案 3 :(得分:0)
我在这里发布了一个完整的解决方案:
https://stackoverflow.com/a/49331683/7386061
它没有参数。例如,您可以这样做:
.nav--social__link.yt-button{
height: 40px !important;
overflow: visible;
border-radius: 3px;
width: 79px;
margin-right: 4px;
}
.g-ytsubscribe{
display: inline-block;
vertical-align: middle !important;
font-size: 1px;
line-height: normal; font-size: 1px;
text-indent: 0px;
padding: 0px;
background: transparent none repeat scroll 0% 0%;
border-style: none;
}