Один ужасный, ужасный способ добиться этого - отменить обязанности:
class SomeObject():
def __init__(self, def_name):
self.defined_name = def_name
globals()[def_name] = self
SomeObject("ThisObject")
print ThisObject.defined_name
Если вы хотите поддержать что-то иное, чем глобальное пространство, вам придется сделать что-то еще более ужасное.
Это очень чувствительный момент, чтобы понять, как работает System.out.print. Если первый элемент - String, то оператор плюс (+) работает как оператор String concate. Если первый элемент целочисленный плюс (+), оператор работает как математический оператор.
public static void main(String args[]) {
System.out.println("String" + 8 + 8); //String88
System.out.println(8 + 8+ "String"); //16String
}
Очевидно, что компилятор был сделан запутанным способом, хотя разработчики компилятора думали, что они добавили некоторую смекалку. Истинная мудрость, которую они действительно должны добавить, состоит в том, чтобы смотреть весь аргумент и последовательно интерпретировать оператор +. Например, System.out.println(1+2+"hello"+3+4);
должен вывести 3hello7
вместо 3hello34