如何在Python中从另一个类调用方法

2024-04-19 03:11:58 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能告诉我如何从User类中的def test(self):方法调用add_row方法吗?
现在我正在使用callRows().add_row()的代码。我在defadd_row(self):中打印一些东西,然后它打印,但不在屏幕中添加小部件。你知道吗

你知道吗测试.py你知道吗

class User(Popup):

    def __init__(self, obj, **kwargs):
        super(User, self).__init__(**kwargs)

    def test(self):
        Rows().add_row()

class narration(BoxLayout):
    col_data = ListProperty(["?", "?", "?"])
    button_text = StringProperty("")

    def __init__(self, **kwargs):
        super(narration, self).__init__(**kwargs)

class Rows(BoxLayout):
    row_count = 0

    def __init__(self, **kwargs):
        super(Rows, self).__init__(**kwargs)

    def add_row(self):
        self.row_count += 1
        self.add_widget(narration(button_text=str(self.row_count)))

Tags: 方法testselfaddinitdefcountkwargs
2条回答

我把你的代码改了一点,让你看看是怎么做的。你知道吗

在tmp.py公司你知道吗

class Rows(object):
    row_count = 0

    def __init__(self, **kwargs):
        super(Rows, self).__init__(**kwargs)

    def add_row(self):
        self.row_count += 1
        print "Hello"
        # self.add_widget(narration(button_text=str(self.row_count)))

class User(Rows):

    def __init__(self, obj, **kwargs):
        super(User, self).__init__(**kwargs)

    def test(self):
        self.add_row()

class narration(object):
    # col_data = ListProperty(["?", "?", "?"])
    # button_text = StringProperty("")

    def __init__(self, **kwargs):
        super(narration, self).__init__(**kwargs)

为了使它工作,我不得不注释掉一些行。你知道吗

现在,在tmp2.py中

from tmp import User

if __name__ == '__main__':
    temp = User("H")
    temp.test()
    # outputs : Hello

我们所做的是实例化用户类,例如:

class User(Rows):,因此,当您调用User class时,使用适当的super()语句,您将能够使用行的方法,就像在User class中定义的那样。你知道吗

因此,您将调用(在代码中已修改):self.add_row(),即使add_row()行中的方法。你知道吗

class User(Popup):

    def __init__(self, obj, **kwargs):
        super(User, self).__init__(**kwargs)
        self.row_obj = obj

    def test(self):
        self.row_obj.add_row()


class narration(BoxLayout):
    col_data = ListProperty(["?", "?", "?"])
    button_text = StringProperty("")

    def __init__(self, **kwargs):
        super(narration, self).__init__(**kwargs)


class Rows(BoxLayout):
    row_count = 0

    def __init__(self, **kwargs):
        super(Rows, self).__init__(**kwargs)

    def add_row(self):
        self.row_count += 1
        self.add_widget(narration(button_text=str(self.row_count)))


rows_obj = Rows()
user_obj = User(rows_obj)

它不是一个工作代码,它只是一个例子,但你的方法应该是这样的那。如果您不希望传递“Rows”类的对象,而希望使用继承概念将“User”类作为“Rows”类的子类。你知道吗

class User(Rows,Popup):

相关问题 更多 >