Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python类中创建pybullet客户端的多个实例_Python_Python 3.7_Bullet_Python Class - Fatal编程技术网

在python类中创建pybullet客户端的多个实例

在python类中创建pybullet客户端的多个实例,python,python-3.7,bullet,python-class,Python,Python 3.7,Bullet,Python Class,我在python类中使用pybullet。我将其导入为将pybullet导入为p。 当我有几个使用Pybill的类实例时,类p对于每个实例是相同的还是“变量”p对于每个实例是唯一的 福比 import pybullet as p class Foo: def __init__(self, counter): physicsClient = p.connect(p.DIRECT) def setGravity(self): p.setGravity

我在python类中使用pybullet。我将其导入为
将pybullet导入为p
。 当我有几个使用Pybill的类实例时,类
p
对于每个实例是相同的还是“变量”p对于每个实例是唯一的

福比

import pybullet as p

class Foo:
    def __init__(self, counter):
        physicsClient = p.connect(p.DIRECT)
    def setGravity(self):
        p.setGravity(0, 0, -9.81)
(more code)
和main.py

from foo import Foo

foo1 = Foo(1)
foo2 = Foo(2)
foo1.setGravity()

setGravity()
会影响foo1和foo2中的
p
,还是只影响foo1?

您可以使用bullet\u客户端获得两个不同的实例。像这样:

import pybullet as p
import pybullet_utils.bullet_client as bc


class Foo:
    def __init__(self, counter):
        self.physicsClient = bc.BulletClient(connection_mode=p.DIRECT)

    def setGravity(self):
        self.physicsClient.setGravity(0, 0, -9.81)


foo1 = Foo(1)
foo2 = Foo(2)
foo1.setGravity()
foo2.setGravity()

print("Adress of  foo1 bullet client 1 : " + str(foo1.physicsClient))
print("Adress of foo2 bullet client 2  : " + str(foo2.physicsClient))
输出:

Adress of  foo1 bullet client 1 : 
<pybullet_utils.bullet_client.BulletClient object at 0x7f8c25f12460>
Adress of foo2 bullet client 2  : 
<pybullet_utils.bullet_client.BulletClient object at 0x7f8c0ed5a4c0>
foo1 bullet客户端1的地址:
foo2 bullet客户端2的地址:
正如您在这里看到的:您得到了两个不同的实例,每个实例存储在不同的地址中

请参阅官方存储库中的以下示例:
p
不是传统意义上的变量;这是一个模块,所以对每个
Foo
实例都是一样的。当你尝试你描述的内容时,你观察到了什么行为?你所说的“在foo1和foo2中影响p,或者仅仅是foo1”是什么意思?你的意思是,如果你在foo1上调用setGravity(),这会影响foo2重力吗?顺便问一下:在“setGravity”方法中,你忘了写
self
像这样:
def setGravity(self)
@yAzou是的,如果我在一个foo中调用它[x]会影响每个foo[\uz]中的重力吗?阿富汗人有没有办法使它特定于一个实例?