None. By definition. That is the only possible thing you could get.
Which means your two examples are NOT equivalent; however, you can simplify it to this:
if obj.?attribute is not None:
print(obj.attribute)
Like all new pieces of syntax, it must be learned. But that’s true of all the syntax we already have in the language. The “thousand-yard stare” phenomenon could just as easily be caused by a list comprehension:
distances = [(a.x - b.x) ** 2 + (a.y - b.y) ** 2 for a, b in segments]
or a decorated function:
@app.route("/", methods=["GET"])
def home(): ...
or a regular expression:
if m := re.search("[a-z]+[0-9]+", text):
print(m.groups(0))
or any of a number of other constructs. This is no different. So the question is not “do we all already know what this means”, but “can we learn it, and does it justify the complexity it adds to the language?”.
Personally, I believe that the answer is “yes and yes”.