1

#whereami以下のコードで、誰かが(3行目)とマークされた行で、インスタンス化されたProgrammerオブジェクトではなくPersonクラスにいることをどのように識別できるか教えてください。

理想的にはクラス/タイプオブジェクトが欲しいのですが、それが返されない場合はクラス名「Person」で十分です。

class Person(object):
    def opinion(self):
        #whereami
        print "Time for a cup of tea"

class Programmer(Person):
    def opinion(self):
        super(Programmer, self).opinion()
        print "There is no spoon"

if '__name__' == '__main__':
    programmer = Programmer()
    programmer.opinion()
4

2 に答える 2

1

次の行を挿入してみてください

className=self.__class__.__name__

className変数には、現在のクラス名の値が文字列として含まれます

于 2013-03-05T12:36:14.287 に答える
0

使用する

type('object')

Python3.2 を使用した以下の例を参照してください

class Person(object):
    def opinion(self):
        print(type(self))
        print ("Time for a cup of tea")

class Programmer(Person):
    def opinion(self):
        super(Programmer, self).opinion()
        print ("There is no spoon")

if '__name__' == '__main__':
    programmer = Programmer()
    programmer.opinion()

p = Person()
p.opinion()
print('\n')
pg = Programmer()
pg.opinion()

結果

<class '__main__.Person'>
Time for a cup of tea


<class '__main__.Programmer'>
Time for a cup of tea
There is no spoon

最初の結果が「Person」クラスによって呼び出されたことがわかります。

于 2013-03-05T12:34:42.377 に答える