0

私はPythonで次のクラスを持っています:

class String:    
    def clean_string(self, corpus):
        f = open(corpus, 'r')
        raw = f.read().lower()
        f.close()
        raw1 = re.sub(omissis, '', raw) 
        self.string = raw1

    def print_string(self):
        return self.string

class Set:
    def letters_set(self, string):
        self.let_set = set(re.findall(omissis, string))

class Dict:
    def __init__(self, dictionary={}):
        self.dictionary = {} 
        self.string = String()
        self.let_set = Set() 

    def generate_possible_triplets(self, let_set):
        triplet = [(ch1, ch2, ch3) for ch1 in let_set
                                   for ch2 in let_set
                                   for ch3 in let_set]
        [...]

関数の引数としてのオブジェクトに問題があります。Setclassの 1 つである class のインスタンスを作成しString、 method を呼び出したいとします.letters_set(String.string)

括弧内に引数として何を入れなければなりませんか? 作成するクラス文字列のオブジェクトの名前は? このオブジェクトを参照する変数? .generate_possible_triplets( のメソッドにも同じことが当てはまりますDict。どのような形式をlet_set取る必要がありますか?

4

1 に答える 1

1

あなたはおそらくあなたのメソッドにあなたのカスタムクラスのインスタンスを受け入れさせたいでしょう...

class String:
    ...

class Set:
    def letters_set(self, stringObj):
        # stringObj is a String instance
        self.let_set = set(re.findall(omissis, stringObj.string))

class Dict:
    ...

    def generate_possible_triplets(self, setObj):
        # setObj is a Set instance
        triplet = [(ch1, ch2, ch3) for ch1 in setObj.let_set
                                   for ch2 in setObj.let_set
                                   for ch3 in setObj.let_set]


aString = String()
aSet = Set()
aDict = Dict()

aSet.letters_set(aString)
aDict.generate_possible_triplets(aSet)

その後、メソッドは、属性にアクセスするためにこれらのクラスを適切に操作することを期待できます。.stringこの例では、渡されるオブジェクトの機能を具体的にチェックしていませんが、または.let_set属性を持たない不適切なオブジェクトタイプにアクセスしようとすると、明らかに例外が発生します。

于 2012-10-10T20:35:26.313 に答える