0

こんにちは、Python を学んでいます。Python は私の最初の言語でもあります。クラスがどのように機能するかを理解しようとしています。私はこの小さなコードを持っていますが、1 週間検索しても機能しません。助けてくれてありがとう。

また、 getattr と super が何をするのかを理解しようとしています。ドキュメントを読みましたが、理解するのは簡単ではありません。英語は私の母国語ではなく、理解するのが少し難しい場合があります. この2つのことを説明できる場合、または簡単な方法で説明しているWebサイトを知っている場合は、本当に感謝します.

コードは次のとおりです。

import sys


class Map(object):
    dicti = {'stuff': stuff(),
             'more_stuff': more_stuff()
    }

    class Stuff:

        def stuff(self):
            print "did it work?"
            next = raw_input("type next: ")

            if next == "next":
                return 'more_stuff'
            else:
                print "what? lets try again."
                return 'stuff'      

    class MoreStuff:

        def more_stuff(self):
            print "ok"

            next = raw_input('type next: ')

            if next == "next":
                return 'stuff'

            else:
                print "bye."
                sys.exit(0)


class NewClass(Map):

    def __init__(self, themap):

        self.themap = themap

    def Continu(self):

        next = self.themap

        while True:
            print "----"

            room = next()




a_test = NewClass('stuff')
a_test.Continu()
4

2 に答える 2

0

あなたのクラスの問題は、それが何も表していないように見えることです (それが厳しい場合は申し訳ありません)。コードを修正するのではなく、いくつかの例を示します。

これらは私が書いたサンプルクラスです。最初のものはばかげていますが、実際には単純で、何かを学ぶことができます. hasattrからそれほど遠くないものを使用しgetattrます。

クラスにはロジックを含めることができますが、それらをオブジェクトに関する情報を管理する方法と見なすようにしてください。私は、python の意味と単語の通常の意味の両方でオブジェクトを意味します。

また、 の下にインデントされた他のクラスがいくつかあることに気付きましたMap。今のところ、クラスを別々のものとして扱うだけです。そのようなものをインデントしても、それらに特別な関係はありませんMap

class OppMan:

    def __init__(self, awake = False):

        self.truth = awake
        self.answers = 0


    def echo(self, userIn):

        if type(userIn) == (int or float):
            answer = -1*self.truth*userIn

        elif hasattr(userIn, '__str__') or hasattr(userIn, '__repr__'):
            answer = 'not '*self.truth + str(userIn)

        else:
            try:
                answer = -1*userIn
            except:
                answer = 'I am only human'

        self.answers += 1
        return answer

使用例:

Barney = OppMan(True)

print(Barney.echo(420))
print(Barney.echo('yours'))
print(Barney.echo(['a','b','c']))
print(Barney.answers)


Betty = OppMan()

print(Betty.echo('you figure it out'))

これは分数のようなもので、次のようなものです。

class Rational:

    def __init__(self, numer, denom):
        self.n = numer
        self.d = denom



    def __add__(self, other):
        return Rational((self.n*other.d)+(self.d*other.n), self.d*other.d)

    def __mul__(self, other):
        return Rational(self.n*other.n, self.d*other.d)

    def __str__(self):
        return str(self.n) + '/' + str(self.d)

使用例:

foo = Rational(3,5)
bar = Rational(1,7)
print(foo+bar)


foo = Rational('3','5')
bar = Rational(1,2)
print(foo+bar)

「部屋」や辞書などで何をしようとしているのかわかりませんが、これらを調べて、解決する簡単な問題をいくつか見つけてみてください。これらがどのように機能するかを理解するには少し時間がかかるかもしれませんが、最後にはクラスについて詳しく知ることができます。

于 2013-05-21T06:00:27.550 に答える