Ⅰ 怎麼用python把*.obj文件裡面的3D模型特徵提取出來
1,去官網hge.net/下載Assimp放到centos7下,並解壓
2,仔細閱讀INSTALL文件
3,cmake CMakeLists.txt -G 'Unix Makefiles'
4,make
5,make install
6,檢查ls /usr/local/lib/libassimp*或/usr/local/include/assimp
7,准備安裝PyAssimp,git clone:hss...
8,確認是否安裝python2.7.X
9,python setup.py install 安裝完成
接下來就可以測試了
from pyassimp import *
scene = load('feiji1.obj')assert len(scene.meshes)
mesh = scene.meshes[0]assert len(mesh.vertices)
print(mesh.vertices[0])
release(scene)
Ⅱ python怎麼查看object 里的成員變數
首先通過一個例子來看一下本文中可能用到的對象和相關概念。
對於實現了__call__的類實例,這個方法會返回False。如果目的是只要可以直接調用就需要是True的話,不妨使用isinstance(obj, collections.Callable)這種形式。我也不知道為什麼Callable會在collections模塊中,抱歉!我猜大概是因為collections模塊中包含了很多其他的ABC(Abstract Base Class)的緣故吧:)
3.2. 獲取對象信息
getmembers(object[, predicate]):這個方法是dir()的擴展版,它會將dir()找到的名字對應的屬性一並返回,形如[(name, value), ...]。另外,predicate是一個方法的引用,如果指定,則應當接受value作為參數並返回一個布爾值,如果為False,相應的屬性將不會返回。使用is*作為第二個參數可以過濾出指定類型的屬性。
getmole(object):還在為第2節中的__mole__屬性只返回字元串而遺憾嗎?這個方法一定可以滿足你,它返回object的定義所在的模塊對象。
get{file|sourcefile}(object):獲取object的定義所在的模塊的文件名|源代碼文件名(如果沒有則返回None)。用於內建的對象(內建模塊、類、函數、方法)上時會拋出TypeError異常。
get{source|sourcelines}(object):獲取object的定義的源代碼,以字元串|字元串列表返回。代碼無法訪問時會拋出IOError異常。只能用於
Ⅲ python ,函數與方法,f_obj.count_words()與count_words(f_obj)其中的區別
f_obj是一個str類型的變數
而str類里沒有count_words()方法,所以報錯
count_words()是一個獨立的函數,它不屬於任何類,因此調用形式就是count_words(參數)
Ⅳ 列出Python模塊中的所有函數問題,怎麼解決
比如,sys模塊: import sys
sys.argv 是一個 list,包含所有的命令行參數.
sys.stdout sys.stdin sys.stderr 分別表示標准輸入輸出,錯誤輸出的文件對象.
sys.stdin.readline() 從標准輸入讀一行 sys.stdout.write("a") 屏幕輸出a
sys.exit(exit_code) 退出程序
sys.moles 是一個dictionary,表示系統中所有可用的mole
sys.platform 得到運行的操作系統環境
sys.path 是一個list,指明所有查找mole,package的路徑.
操作系統相關的調用和操作: import os
os.environ 一個dictionary 包含環境變數的映射關系
os.environ["HOME"] 可以得到環境變數HOME的值
os.chdir(dir) 改變當前目錄 os.chdir('d:\\outlook')
注意windows下用到轉義
os.getcwd() 得到當前目錄
os.getegid() 得到有效組id os.getgid() 得到組id
os.getuid() 得到用戶id os.geteuid() 得到有效用戶id
os.setegid os.setegid() os.seteuid() os.setuid()
os.getgruops() 得到用戶組名稱列表
os.getlogin() 得到用戶登錄名稱
os.getenv 得到環境變數
os.putenv 設置環境變數
os.umask 設置umask
os.system(cmd) 利用系統調用,運行cmd命令
內置模塊(不用import就可以直接使用)常用內置函數:
help(obj) 在線幫助, obj可是任何類型
callable(obj) 查看一個obj是不是可以像函數一樣調用
repr(obj) 得到obj的表示字元串,可以利用這個字元串eval重建該對象的一個拷貝
eval_r(str) 表示合法的python表達式,返回這個表達式
dir(obj) 查看obj的name space中可見的name
hasattr(obj,name) 查看一個obj的name space中是否有name
getattr(obj,name) 得到一個obj的name space中的一個name
setattr(obj,name,value) 為一個obj的name
space中的一個name指向vale這個object
delattr(obj,name) 從obj的name space中刪除一個name
vars(obj) 返回一個object的name space。用dictionary表示
locals() 返回一個局部name space,用dictionary表示
globals() 返回一個全局name space,用dictionary表示
type(obj) 查看一個obj的類型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子類
################## 類型轉換 ##################
chr(i) 把一個ASCII數值,變成字元
ord(i) 把一個字元或者unicode字元,變成ASCII數值
oct(x) 把整數x變成八進製表示的字元串
hex(x) 把整數x變成十六進製表示的字元串
str(obj) 得到obj的字元串描述
list(seq) 把一個sequence轉換成一個list
tuple(seq) 把一個sequence轉換成一個tuple
dict(),dict(list) 轉換成一個dictionary
int(x) 轉換成一個integer
long(x) 轉換成一個long interger
float(x) 轉換成一個浮點數
complex(x) 轉換成復數
max(...) 求最大值
min(...) 求最小值
Ⅳ Python 使用對象模型來存儲數據
Python使用對象模型來存儲數據。構造任何類型的值都是一個對象。盡管Python通常被當成一種「面向對象的編程語言」,但你完全能夠寫出不使用任何類和實例的實用腳本。不過Python的對象語法和架構鼓勵我們使用這些特性,下面讓我們仔細研究一下Python對象。所有的Python對像都擁有三個特性:身份,類型和值。
身份:每一個對象都有一個唯一的身份標識自己,任何對象的身份可以使用內建函數id()來得到。這個值可以被認為是該對象的內存地址。你極少會用到這個值,也不用太關心它究竟是什麼。
類型對象的類型決定了該對象可以保存什麼類型的值,可以進行什麼樣的操作,以及遵循什麼樣的規則。你可以用內建函數type0查看Python對象的類型。因為在Python中類型也是對象(還記得我們提到Python是面向對象的這句話嗎?),所以type0返回的是對象而不是簡單的字元串。
值:對象表示的數據項。
上面三個特性在對象創建的時候就被賦值,除了值之外,其他兩個特性都是只讀的。對於新式類型和類,對象的類型也是可以改變的,不過並不推薦初學者這樣做。如果對象支持更新操作,那麼它的值就可以改變,否則它的值也是只讀的。對象的值是否可以更改被稱為對象的可改變性(mutability),我們會在後面的4.7小節中討論這個問題。只要一個對象還沒有被銷毀,這些特性就一直存在。Python有一系列的基本(內建)數據類型,必要時也可以創建自定義類型來滿足你對應用程序的需求。絕大多數應用程序通常使用標准類型,對特定的數據存儲則通過創建和實例化類來實現。
Ⅵ python中類對象和方法的區別是什麼
python使用對象模型來存儲數據,也就是說構造任何類型的值都是一個對象。所有的python對象都擁有三個特性:身份id,類型和值。
身份id:唯一的身份標識,可以使用內建函數id()來得到,這個值可以被認為是該對象的內存地址。
類型:對象的類型決定了該對象可以保存什麼類型的值,可以進行什麼樣的操作,以及遵循什麼樣的規則,可以用內建函數type()查看
python對象的類型,也可以用isinstance(),在python中類型也是對象。
值:對象表示的數據項。布爾邏輯運算符包括and、or、not,對象值的比較除了一些常見的運算符(< > <= >= == !=)之外,還可以
使用cmp()內建函數,如果是用戶自定義對象,cmp()對調用該類的特殊方法__cmp__()。對於字元串來說,內建函數str(obj)返回對象適
合可讀性好的字元串表示,而另一個內建函數repr(obj)返回一個對象的字元串表示,通常情況下obj == eval(repr(obj))這個等式是成立
的。可以這么說,repr()的輸出對python比較友好,str()的輸出對人比較友好。方法是在類中定義的函數。
更多技術請關注Python視頻教程。
Ⅶ Python怎麼讓編譯器推斷出參數類型
當然可以,如果你用pycharm的話,就在敲出OBJ之前加一行
assert isinstance(obj, 你定義的類名)
之後你輸入obj.就出來類方法啥的了
Ⅷ python定義模型
學python的人都知道,python中一切皆是對象,如class生成的對象是對象,class本身也是對象,int是對象,str是對象,dict是對象...。所以,我很好奇,python是怎樣實現這些對象的?帶著這份好奇,我決定去看看python的源碼,畢竟源碼才是滿足自己好奇心最直接的方法。
在object.h文件中,定義了兩種數據結構PyObject和PyVarObject,代碼如下:
1 #define PyObject_HEAD 2 Py_ssize_t ob_refcnt; 3 struct _typeobject *ob_type; 4 5 #define PyObject_VAR_HEAD 6 PyObject_HEAD 7 Py_ssize_t ob_size; 8 9 typedef struct _object {10 PyObject_HEAD11 } PyObject;12 13 typedef struct {14 PyObject_VAR_HEAD15 } PyVarObject;
這兩種數據結構分別對應python的兩種對象:固定長度對象和可變長度對象。python中的所有對象都屬於這兩種對象中的一種,如int,float是固定長度對象,list,str,dict是可變長度對象。從上面兩種對象數據結構定義來看,可變長度對象和固定長度對象的頭都是PyObject結構體,也就是說python中所有對象的開頭都包含這個結構體,並且可以用PyObject *指針來訪問任何對象,這種訪問對象的方法在python的源碼中隨處可見。PyObject結構體包含兩個成員,ob_refcnt和ob_type指針。ob_refcnt用來表示對象被引用的次數,當ob_refcnt == 0時,這個對象會被立即銷毀;ob_type指針指向了一個_typeobject類型的結構體,表示對象所屬的類型,也就是生成該對象的類型,這其實很類似於面向對象中類與實例的關系,PyObject是某個類的實例,ob_type表示這個類。但與面向對象不同的是,ob_type本身也是個對象,我們來看下_typeobject的定義:
1 typedef struct _typeobject { 2 PyObject_VAR_HEAD 3 const char *tp_name; /*類型名 */ 4 Py_ssize_t tp_basicsize, tp_itemsize; /* 實例化對象的大小 */ 5 6 /* 標准方法 */ 7 8 destructor tp_dealloc; 9 printfunc tp_print;10 getattrfunc tp_getattr;11 setattrfunc tp_setattr;12 cmpfunc tp_compare;13 reprfunc tp_repr;14 15 /* 標准類(數值類,列表類,dict類)方法*/16 17 PyNumberMethods *tp_as_number;18 PySequenceMethods *tp_as_sequence;19 PyMappingMethods *tp_as_mapping;20 21 /* 其它標准方法*/22 23 hashfunc tp_hash;24 ternaryfunc tp_call;25 reprfunc tp_str;26 getattrofunc tp_getattro;27 setattrofunc tp_setattro;28 ...
29 } PyTypeObject;
從上面定義來看,_typeobject的開頭也包含了PyObject結構體,所以它也是一個對象,既然它也是一個對象,那麼按照面向對象的理解,它又是誰來生成的呢?答案是所有PyTypeObject對象都是通過PyType_Type來生成的,包括PyType_Type本身,因為PyType_Type也是PyTypeObject對象,有點繞。PyType_Type的定義是通過將PyType_Type聲明為全局靜態變數實現的,具體如下:
1 PyTypeObject PyType_Type = { 2 PyVarObject_HEAD_INIT(&PyType_Type, 0) 3 "type", /* tp_name */ 4 sizeof(PyHeapTypeObject), /* tp_basicsize */ 5 sizeof(PyMemberDef), /* tp_itemsize */ 6 (destructor)type_dealloc, /* tp_dealloc */ 7 0, /* tp_print */ 8 0, /* tp_getattr */ 9 0, /* tp_setattr */10 0, /* tp_compare */11 (reprfunc)type_repr, /* tp_repr */12 0, /* tp_as_number */13 0, /* tp_as_sequence */14 0, /* tp_as_mapping */15 (hashfunc)_Py_HashPointer, /* tp_hash */16 (ternaryfunc)type_call, /* tp_call */17 0, /* tp_str */18 (getattrofunc)type_getattro, /* tp_getattro */19 (setattrofunc)type_setattro, /* tp_setattro */20 0, /* tp_as_buffer */21 ...22 }
從PyType_Type定義來看,ob_type被初始化為它自己的地址,所以PyType_Type的類型就是自己。從python源碼實現來看,所有PyTypeObject的ob_type都會指向PyType_Type對象,所以PyType_Type是所有類型的類型,稱之為元類。python中定義了很多內建的類型對象,如PyInt_Type (int類型),PyStr_Type (str類型),PyDict_Type(dict類型) 類型對象,下面看下PyInt_Type類型的定義:
1 PyTypeObject PyInt_Type = { 2 PyVarObject_HEAD_INIT(&PyType_Type, 0) 3 "int", 4 sizeof(PyIntObject), 5 0, 6 (destructor)int_dealloc, /* tp_dealloc */ 7 (printfunc)int_print, /* tp_print */ 8 0, /* tp_getattr */ 9 0, /* tp_setattr */10 (cmpfunc)int_compare, /* tp_compare */11 (reprfunc)int_to_decimal_string, /* tp_repr */12 &int_as_number, /* tp_as_number */13 0, /* tp_as_sequence */14 0, /* tp_as_mapping */15 (hashfunc)int_hash, /* tp_hash */16 0, /* tp_call */17 ...18 };
從PyInt_Type定義來看,它主要包含了int數據類型相關的方法。PyInt_Type類型對象的初始化和PyType_Type類型類似,PyInt_Type類型的定義也是通過全局靜態變數的方式實現的,除了PyInt_Type了下,所有python內建類型都是以這種方式定義的。這些類型產生的對象都會共享這些類型對象,包括這些類型定義的方法。
在python中,怎樣查看對象的類型呢?有兩種方法,一種是直接type:
1 >>> x = 12 >>> type(x)3 <type 'int'>
另一種是通過對象的__class__屬性:
1 >>> x = 12 >>> type(x)3 <type 'int'>4 >>> x.__class__5 <type 'int'>
現在來看看int,str,dict這些類型的類型:1 <type 'int'>2 >>> type(int)3 <type 'type'>4 >>> type(str)5 <type 'type'>6 >>> type(dict)7 <type 'type'>8 >>> type(type)9 <type 'type'>從這個輸出來看,int,str,dict這些類型的類型都是type,這也印證了前面說的,所有類型都是通過元類type生成的。
Ⅸ 如何用python遍歷一個 object數組
本教程從一個基本面說明了遠程式控制制技術的編程環節,可能大家比較感興趣的是查看install.cpp裡面的InstallService()方法,首先遍歷HKEY_LOCAL_MACHINE\\
Ⅹ python 如何查看object有哪些屬性值
dir([obj]):
調用這個方法將返回包含obj大多數屬性名的列表(會有一些特殊的屬性不包含在內)。obj的默認值是當前的模塊對象。
hasattr(obj, attr):
這個方法用於檢查obj是否有一個名為attr的值的屬性,返回一個布爾值。
getattr(obj, attr):
調用這個方法將返回obj中名為attr值的屬性的值,例如如果attr為』bar』,則返回obj.bar。
setattr(obj, attr, val):
調用這個方法將給obj的名為attr的值的屬性賦值為val。例如如果attr為』bar』,則相當於obj.bar = val。