【问题标题】:Calling Class Function(s) of 2 Classes at Each Other互相调用 2 个类的类函数
【发布时间】:2021-10-04 16:33:42
【问题描述】:

我创建了两个类,它们在发布结果之前会调用彼此的函数,但我无法让它工作,有什么原因我可以调用上面第一个类的函数但不能调用下面的函数?
这是程序:

import random

HAND = []
DECK = ['Ojama Red', 'Ojama Blue','Ojama Yellow','Ojama Green','Ojama Black', 'Ojama Pink', 'Ojama Lime']

class A:

    def func1(self):
        random.shuffle(DECK)
        B.func3()
    def func2(self):
        c = DECK[0]
        if c in DECK:
            HAND.append(c)
            DECK.remove(c) 

class B:
    def func3(self): # STANDBY
        self.func4()
    def func4(self): # DRAW
        A.func2()
        self.func5()
    def func5(self): # MAIN PHASE 1
        print('\n', HAND)
        print('\n', DECK)

start_game = A()
start_game.func1()

【问题讨论】:

  • 在函数 4 中,您首先调用函数 2,因此您的代码在函数 2 处结束
  • 在函数2的末尾添加B.func5()
  • 我遇到的问题是,我希望两个类的功能可以相互使用,除非实际上不可能,否则我只需要找出其他方法。请继续提供更多提示和建议,因为我将尽可能定期地查看此主题,直到找到令人满意的解决方案或获得结果的替代方法。 :)
  • 你好,你可以把函数添加为无限循环,以便函数继续运行,然后在不可能时打破循环
  • 这有点乱。为什么两个类都处理全局变量?为什么您使用实例方法,就好像它们是类或静态方法一样?由于方法名称没有提及它们的作用或目的是什么,因此很难遵循代码。

标签: python list random shuffle card


【解决方案1】:
import random

HAND = []
DECK = ['Ojama Red', 'Ojama Blue','Ojama Yellow','Ojama Green','Ojama Black', 'Ojama Pink', 'Ojama Lime']

class B:
    def func3(self):
        self.func4()
    def func4(self): # DRAW
        A.func2()
        self.func5()
    def func5(self): # MAIN PHASE 1
        print('\n', HAND)
        print('\n', DECK)

class A:
    def __init__(self):
        self.B = B()
    def func1(self, DECK):
        random.shuffle(DECK)
        self.B.func3()
    def func2(self):
        c = DECK[0]
        if c in DECK:
            HAND.append(c)
            DECK.remove(c) 



A = A()
A.func1(DECK)

这将给出类似的输出。

['Ojama Lime']

['Ojama Yellow', 'Ojama Black', 'Ojama Blue', 'Ojama Pink', 'Ojama Red', 'Ojama Green']
> 

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多