2015-10-15 18 views
-1

我有一個名爲Camera的類,它使用Python在Linux上初始化網絡攝像頭,但是我遇到了該類的問題。我想在多個程序中使用該類。我讓班級成了一個單身人士。當我在同一個程序中多次訪問該類時,它完美地工作,它會返回一個實例。但是當我從其他程序訪問該類時,它會創建其他實例。例如:Python類服務

class Camera(): 
    __new__(): 
    ..... 
    ..... 
    print "__new__ called" 
    __init__(): 
     get_frame(); 
     print "__instance created" 

c1 = Camera() 
c2 = Camera() 
Results: 
__new__ called 
__instance created 
__new__ called 

但我想從多個程序訪問類,如:

main1.py 
main2.py 
main3.py 

我要訪問從多個節目該類我希望類初始化僅僅一次,然後返回調用這個類的每個程序都有相同的實例。

有什麼辦法可以創建一個Camera類的程序或服務,我可以單獨運行這個類,我將從其他程序訪問類的元素?

請舉例說明如何將該類作爲應用程序或服務運行,以及如何在其他程序中調用該運行類的元素。

+0

1.那個*「類定義」* ...不是。 2.爲什麼你不公開一個類的實例,並導入實例? – jonrsharpe

+0

,因爲如果我初始化相機兩次它stucks。當攝像機初始化一次,而不能在另一個波形圖中使用時。多數民衆贊成在我想要這樣一個班,這是一個呃 – Engr

+0

...什麼?!你可以給[mcve] *實際運行*並重新創建問題?你爲什麼期望'__init__'不被調用,你有沒有讀過[適當的文檔](https://docs.python.org/2/reference/datamodel.html#object.__new__)? – jonrsharpe

回答

0

只創建一個實例,然後將其導入到其他程序中。

Camera.py:

class Camera(): 
    def __init__(self): 
     print "__instance created" 

    def someFunc(self): 
     print "Cool stuff here!" 

c1 = Camera() 

file2.py:

import Camera 

c2 = Camera.c1 

要調用的方法使用c2.someFunc()

+0

@jonrsharpe我已經編輯過。它意在成爲調用方法的一個例子。 – Psytho

+0

沒有此方法不起作用。當我從其他程序調用它時,它會每次創建新實例 – Engr

+0

@Engr你怎麼稱呼它?我有相同的實例。 – Psytho