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

问题描述 投票:0回答:1

我在一个python类中使用pybullet。我把它导入为 import pybullet as p.当我有几个使用pybullet的类的实例时,该类的 p 还是每个实例的 "变量 "p是唯一的?

foo.py

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() 影响 p 在foo1和foo2中还是只有foo1?

python python-3.7 bullet python-class
1个回答
3
投票

你可以使用bullet_client得到两个不同的实例。

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>

正如你可以看到这里:你得到了两个不同的实例,每个实例都存储在diferrent adress中。

请看下面来自官方仓库的例子。https:/github.combulletphysicsbullet3blobmasterexamplespybulletgympybullet_utilsexamplesmultipleScenes.py

© www.soinside.com 2019 - 2024. All rights reserved.