0

それを実行するために何をすべきか

class parent():
    age=None
    name=None
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def printout(self):
        print(self.name)
        print(self.age) 

class child(parent):
    def __init__(self,name,age,gender):
        super(parent,self).__init__(self.name,self.age)
        print gender

c=child("xyz",22,"male")
c.printout()

私はPythonの世界の初心者で、何が問題なのか理解できません

4

3 に答える 3

2

super()新しいスタイルのクラスでのみ機能します。objectの基本クラスに追加しparentます。

class parent(object):

super()通話を調整することもできます。検索を開始するクラスではなく、現在のクラスを指定する必要があり、あなたが呼び出されるまでにまだ設定されていますが、 and引数を渡したいようです:parentself.nameself.ageNone__init__nameage

def __init__(self, name, age, gender):
    super(child, self).__init__(name, age)
    print gender

これらの変更により、コードは次のように機能します。

>>> c = child("xyz", 22, "male")
male
>>> c.printout()
xyz
22
于 2013-10-21T09:19:14.267 に答える
1

super()新しいスタイルのクラスでのみ機能します (Python3 では、すべてが新しいスタイルです)。だからあなたが必要です

class parent(object):

また、super の呼び出しでは、最初の引数は親クラスではなく子クラスの名前です。子クラスの呼び出しは

super(child, self).__init__(name, age)
于 2013-10-21T09:22:00.200 に答える
1

機能objectさせるには継承する必要があり、それらを呼び出しに渡すときは常にそうです。super()self.nameself.ageNonesuper()

class parent(object):

と:

super(child, self).__init__(name, age)
于 2013-10-21T09:21:04.983 に答える