Using Multiple VL53L1X with Raspberry Pi

From that code, it seems like you are not familiar with how to declare and work with objects in Python. You are trying to change the address (VL53L1X.VL53L1X().change_address(new_address = 0x2B)) before you create an object to work with (tof = VL53L1X.VL53L1X(i2c_bus=0, i2c_address=0x2B)) and before you initialize the sensor and the I2C communication (tof.open()).

You might try this code:

import VL53L1X
import RPi.GPIO as GPIO

XSHUT = 16

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(XSHUT,GPIO.OUT)
GPIO.output(XSHUT,GPIO.LOW)

tof1 = VL53L1X.VL53L1X(i2c_bus=0, i2c_address=0x29)
tof1.open()
tof1.change_address(new_address = 0x2B)
GPIO.setup(XSHUT,GPIO.IN)
tof2 = VL53L1X.VL53L1X(i2c_bus=0, i2c_address=0x29)
tof2.open()
# now tof1 has address 0x2B and tof2 has address 0x29

tof1.start_ranging(1)                   # Start ranging, 1 = Short Range, 2 = Medium Range, 3 = Long Range
distance_in_mm = tof1.get_distance()    # Grab the range in mm
tof1.stop_ranging()                     # Stop ranging

tof2.start_ranging(1)                   # Start ranging, 1 = Short Range, 2 = Medium Range, 3 = Long Range
distance_in_mm = tof2.get_distance()    # Grab the range in mm
tof2.stop_ranging()                     # Stop ranging

-Nathan