Удалить серый BG за вкладками в JFX

Ну, есть почти способ сделать это:

#!/usr/bin/env python
import traceback
class SomeObject():
    def __init__(self, def_name=None):
        if def_name == None:
            (filename,line_number,function_name,text)=traceback.extract_stack()[-2]
            def_name = text[:text.find('=')].strip()
        self.defined_name = def_name

ThisObject = SomeObject()
print ThisObject.defined_name 
# ThisObject

Модуль трассировки позволяет вам заглянуть в код, используемый для вызова SomeObject (). С небольшими переборками строк text[:text.find('=')].strip() вы можете догадаться, что должно быть def_name.

Однако этот хак хрупкий. Например, это не работает так хорошо:

ThisObject,ThatObject = SomeObject(),SomeObject()
print ThisObject.defined_name
# ThisObject,ThatObject
print ThatObject.defined_name 
# ThisObject,ThatObject

Итак, если бы вы использовали этот хак, вы должны иметь в виду, что вы должны вызвать SomeObject (), используя простой оператор python:

ThisObject = SomeObject()

Кстати, в качестве еще одного примера использования traceback, если вы определяете

def pv(var):
    # stack is a list of 4-tuples: (filename, line number, function name, text)
    # see http://docs.python.org/library/traceback.html#module-traceback
    #
    (filename,line_number,function_name,text)=traceback.extract_stack()[-2]
    # ('x_traceback.py', 18, 'f', 'print_var(y)')
    print('%s: %s'%(text[text.find('(')+1:-1],var))

, вы можете вызвать

x=3.14
pv(x)
# x: 3.14

, чтобы напечатать оба имя переменной и ее значение.

17
задан 4lex1v 15 May 2012 в 21:28
поделиться