If the model in PuLP is:
from pulp import LpProblem, LpVariable, LpMaximize, lpSum
m = LpProblem(name='example', sense = LpMaximize)
x = LpVariable.dicts(name='x',indexs=[1,2,3])
m += lpSum(x) <= 3, 'c1'
m += lpSum(i*x[i] for i in [1,2,3]), 'obj'
We can access the coefficient of $x_1$ in 'C1' with:
m.constraints['c1'][x] # This the coefficient => 1
and further set it in a pythonic way:
m.constraints['c1'][x] = 2 # Now the coefficient is 2
The same is true for the objective function with:
m.objective[x] = 0 # objective coefficient of x_1 is zero
To chance the RHS, one way is to add or subtract the difference. If the new RHS is 4, we proceed as:
m.constrains['c1'][x] += 1
A new call of m.solve() would be required, the value() function for all the objects won't change until the new call of solve().
Not sure about 3, but perhaps a PuLP developer knows.