You could write a custom class derived from str and override its magic method responsible for the binary OR operator |.
There are many ways to implement the OR. The probably easiest one was already described by @samgak in his answer, you can use int with specifying the base number as 2 and then use its | operator:
class bitstr(str)
def __or__(self, other):
return bin(int(self, 2) | int(other, 2))[2:]
# need to slice because 'bin' prefixes the result string with "0b".
This is how you could use it:
a = '010110'
b = bitstr('100000')
print(bitstr(a) | b)
# Output: 110110
You see that you need a conversion to bitstr somewhere, but it does not matter at which point. Also, for all other operations except the | operator, our custom bitstr behaves exactly like a normal str string, so you could use that everywhere if you want.
See this code running on ideone.com