簡體   English   中英

將數據從一個 class 方法傳遞到另一個 class 方法

[英]passing data from one class method to another class method

我正在學習 Python 和課程,我遇到了需要幫助的挑戰。

當我嘗試將數據從一個 class 方法傳遞到另一個 class 方法時,我遇到了一個錯誤,告訴我它錯過了一個位置參數

例子:

class Student:
    def __init__(self, name):
        self.name = name

    def pass_to_dl(self):
       DataLayer.Datalayer.create_dict_entry(self.name)



class Datalayer:
   def __init__(self):
        self.dict = {}

   def create_dict_entry(self, name):
       new_name = {"name":name}
       self.dict.update(new_name)


new_student = Student("some_name")

我得到的錯誤是:

TypeError: create_new_student() missing 1 required positional argument:

我認為這是因為 create_dict_entry 需要兩個 arguments 而我只發送一個

如果我做兩件事,現在我可以克服這個問題

  1. 在 DataLayer static 中創建 create_dict_entry
  2. 將字典移到 DataLayer class 之外,但說實話,我認為這似乎不是正確的方法

我很想聽聽你對此事的看法

謝謝

附言。 我不希望學生從 DataLayer 繼承,因為我認為 DataLayer 是一個不相關的 class,它只保存我從學生、教師等類中獲取的數據

不確定這是您想要 go 的方式,但是如果我正確理解您要做什么,我認為您想使用inheritance

class Datalayer:
    def __init__(self):
        self.dict = {}

    def create_dict_entry(self, name):
        new_name = {"name":name}
        self.dict[self.name] = new_name

class Student(Datalayer):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def pass_to_dl(self):
        self.create_dict_entry(self.name)

所以在這個例子中, Student是你的“子類”(這就是你傳遞Datalayer作為它的參數的原因)。 在你的__init__中,你想調用super(Student, self).__init__() (或者只是super().__init__()來實例化你的“父類”, Datalayer所以你可以訪問觸發它的__init__ function。

您可能想閱讀一些其他示例以正確理解它( https://realpython.com/python-super/ )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM