2014-10-17 150 views
0

我是Python新手。我試圖做一個使用另一個對象的函數的類,但我不知道如何做到這一點。任何幫助表示讚賞。謝謝!!Python:如何將對象傳遞到另一個類的參數?

所以這是我所想要做的

class Dog: 
 
\t def bark(self): 
 
\t \t print("Hello") 
 

 
class DogHouse: 
 
\t def __init__(self, dog): 
 
\t \t self.owner = dog 
 

 
\t def bark2(self): 
 
\t \t ???

所以我想能夠調用內狗窩,狗的吠聲一個粗略的例子,但我不知道怎麼樣正確地做到這一點。

+4

粘貼我們你的代碼(格式爲Ctrl-K),找出具體的問題,然後我們可以批評它。 – smci 2014-10-17 22:12:03

+0

*「我試圖創建一個使用另一個對象的函數的類」*你的意思是B類使用A的方法,但B不是A的子類? B中的方法可以調用A實例的方法,但只有一個深度的調用級別......不違反Demeter法則*(「對象引用中最多一個點」)* – smci 2014-10-17 22:14:51

+0

...或否則,如果你想讓A和B兩個類共享一些方法,那麼讓它們都從一個公共基類C繼承。你可以強制該方法是抽象的/沒有一個默認的實現,通過'raise Exception'。沒有看到具體細節和代碼,很難知道你真正想要什麼。 – smci 2014-10-17 22:16:39

回答

2

你在說什麼是object oriented programming。我建議你在大學或online上選修一門課程。不過,我已經採取了時間掀起一個簡單的例子做什麼,我覺得你想要它做的:

class A(object): 
    def __init__(self): 
     print("hello world") 

    def new_print(self, some_word): 
     print(some_word.swapcase()) 

    @staticmethod 
    def newer_print(some_word): 
     print(some_word.lower()) 


class B(object): 
    def __init__(self): 
     print("world") 

     #create the object of Class A and then call the method 
     temp = A() 
     temp.new_print("This is a test") 

     #call the static method of Class A 
     A.newer_print("Just one more test") 




if __name__ == "__main__": 
    #create the object for Class B 
    test = B() 

注意Class A有兩個方法(除了__init__)。第一個(new_print)要求在調用方法之前實例化該類的一個對象。第二個(newer_print)可以靜態運行。

調用另一個類的方法是簡單地完成或者:

  1. 創建類的一個對象,並調用它的方法,或者
  2. 調用類的靜態方法

如果你看看在B的實例化方法中,你會看到這兩種情況都被證明了。

+0

將對象作爲類的參數的目的是什麼?我的印象是arg被傳遞給了類,因爲它沒有通過__init__定義,但它並沒有被調用。 – mikey 2017-10-14 09:19:16

+0

@mikey如果你在談論'class A(object):'那麼這就是繼承新類對象的Python 2特定語法。這是Python 3中的默認行爲。 – KronoS 2017-10-23 22:44:22

相關問題