То, что вы, вероятно, хотите, это dir()
.
Уловка состоит в том, что классы могут переопределять специальный метод __dir__
, что приводит к тому, что dir()
возвращает класс хочет (хотя им рекомендуется возвращать точный список, это не применяется). Кроме того, некоторые объекты могут реализовать динамические атрибуты, переопределяя __getattr__
, могут быть прокси-объекты RPC или могут быть экземплярами классов C-расширения. Если ваш объект является одним из этих примеров, у них может не быть __dict__
или возможность предоставить полный список атрибутов через __dir__
: у многих из этих объектов может быть так много динамических атрибутов, которые он делает 't фактически не знает того, что имеет, пока вы не попытаетесь получить к нему доступ.
В коротком пробеге, если dir()
недостаточно, вы можете написать функцию, которая пересекает __dict__
для объекта, а затем __dict__
для всех классов в obj.__class__.__mro__
; хотя это будет работать только для обычных объектов python. В конечном итоге вам, возможно, придется использовать утиную формулировку + предположения - если это похоже на утку, скрестите пальцы и надейтесь, что она имеет .feathers
.
Посмотрите библиотеку ncurses для создания текстовых пользовательских интерфейсов. Он отлично работает с Linux и Windows под Cygwin / MinGW.
Это зависит от вашей ОС / компилятора. Например, в VC ++ вы можете использовать это , и пример можно найти здесь .
#include <windows.h>
int main(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = {3, 6};
SetConsoleCursorPosition(hConsole, pos);
WriteConsole(hConsole, "Hello", 5, NULL, NULL);
return 0;
}
Если вы хотите сделать это в Linux с помощью компилятора g ++, вы можете использовать специальные библиотеки, такие как curses, или написать свою собственную реализацию (будет немного сложно). Например, просто поместив курсор в нужную позицию, вы можете использовать это:
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
void clrscr(void)
{
system("clear");
}
int main() {
int x=10, y=20;
clrscr();
gotoxy(x,y);
printf("Hello World!");
}
В Windows вы должны использовать Windows API.
оттуда, используйте SetCursorPos()
для него.