Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向对象编程:Python 3构造函数中的self问题_Python_Oop_Constructor_Spyder_Blackjack - Fatal编程技术网

面向对象编程:Python 3构造函数中的self问题

面向对象编程:Python 3构造函数中的self问题,python,oop,constructor,spyder,blackjack,Python,Oop,Constructor,Spyder,Blackjack,我目前正试图学习python,试图理解类,但我遇到了一个奇怪的问题 class card: def __init__(self, s, num, name): self.suit = s self.number = num self.name = name class aceCard(card): def __init__(s): card.__init__(s, 0, "ace of " +

我目前正试图学习python,试图理解类,但我遇到了一个奇怪的问题

class card:
    def __init__(self, s, num, name):
        self.suit = s
        self.number = num
        self.name = name

class aceCard(card):
    def __init__(s):
        card.__init__(s, 0, "ace of " + s)
        value1 = 1
        valye11 = 11

class numCard(card):
    def __init__(s, num):
        name = num, " of ", s
        card.__init__(s, num, name)
        value = num

class faceCard(card):
    def __init__(s, num):
        if (num == 11):
            name = "jack of " + s
        elif (num == 12):
            name = "queen of " + s
        elif (num == 13):
            name = "king of " + s
        card.__init__(s, num, name)
        value = 10

class suits:
    cards = []
    def __init__(s):
        cards = [aceCard.__init__(s)]
        n = 1
        while n<11:
            cards.append(numCard.__init__(s, n))
            n+=1
        while n<14 and n>10:
            cards.append(faceCard.__init__(s, n))
            n+=1
        
class deck:
    adeck = []
    def __init__():
        adeck = [suits.__init__("clubs"), suits.__init__("diamonds"), suits.__init__("hearts"), suits.__init__("spades")]
    
    def print():
        for suitses in adeck:
            for cardses in suitses:
                print(cardses.name)
            
                
        
deck1 = deck.__init__()
deck1.print()
类卡:
定义初始化(self,s,num,name):
self.suit=s
self.number=num
self.name=名称
等级卡片(卡片):
定义初始值:
卡牌。uuuuuuuuuuuuuuuuuuuuuuuuuuu初始(s,0,“王牌”+s)
值1=1
勇气11=11
numCard类(卡):
定义初始值(s,num):
name=num,“of”,s
卡片。u u初始化(s,num,name)
值=num
类别识别卡(卡片):
定义初始值(s,num):
如果(num==11):
name=“杰克的”+s
elif(num==12):
name=“女王”+s
elif(num==13):
name=“国王”+s
卡片。u u初始化(s,num,name)
值=10
职业套装:
卡片=[]
定义初始值:
卡片=[ACECards.\uuuuu init\uuuuuu(s)]
n=1

虽然您的代码有几个问题,但问题的根源在于您不知道如何构造父实例

Python使用以下方法完成此任务:

类卡:
定义初始化(self,s,num,name):
self.suit=s
self.number=num
self.name=名称
等级卡片(卡片):
定义初始值(self,s):
super().uuu init_uuuuu(s,0,“+s的王牌)
#这没用。只创建被丢弃的局部变量
#一旦函数结束。
值1=1
勇气11=11

我可以推荐您作为Python OOP实现的一个很好的介绍。

您对哪里感到困惑?错误信息非常清楚。您将
card.\uuuu init\uuuu
定义为需要四个参数(请参阅您的代码)。在第10行中调用代码时,只提供了三个参数。您必须决定初始化方法将如何工作。还要注意,这不是创建类实例的常用方法:在每次调用中,您都创建一张
卡片
,并忽略您创建的对象--您无法再次引用该卡片。我建议(1)您重复关于类和实例的教程,以了解常见用法;(2) 您可以使用更好的编程实践:在编写更多代码之前,测试少量代码以确保它们正常工作。您已经发布了大约50行代码,其中有一些编程异常需要修复。@Prune关于“类和实例教程以了解常见用法”的任何好建议@Prune您实际上可以使用3个参数调用父初始化,但python使用它来先构造父实例(使用)然后将该实例提供给
\uuuu init\uuu
runfile('###', wdir='###')
Traceback (most recent call last):

  File "###", line 55, in <module>
    deck1 = deck.__init__()

  File "###", line 46, in __init__
    adeck = [suits.__init__("clubs"), suits.__init__("diamonds"), suits.__init__("hearts"), suits.__init__("spades")]

  File "###", line 34, in __init__
    cards = [aceCard.__init__(s)]

  File "###", line 10, in __init__
    card.__init__(s, 0, "ace of " + s)

TypeError: __init__() missing 1 required positional argument: 'name'