クラスメソッド、インスタンスメソッド、

3669 ワード

クラスメソッドにはclsパラメータがメソッド自体として必要であり、クラスのサンプル属性は取得できません.
class Person(object):



    __count = 0

    def __init__(self,name):

        self.name=name

        Person.__count=Person.__count+1

    @classmethod

    def how_many(cls):

        return cls.name  #error

        return cls.__count



    def get_count(self):

        return self.__count

        



print Person.how_many()



p1 = Person('Bob')

p1.count=2



print Person.how_many()

1つのインスタンスは、まず自分の属性を探してから、上記のコード、p 1のようなクラスの属性を探す.get_count()は1を返します.まず自分を探しますから.count属性、ない後に更に類の属性Personを探し当てます._count,
Person.__count=Person.__count+1,  self.__count=self.__count+1, Person.how_many() , p1.get_count() 1

そしてもし
インスタンスメソッドは再帰的ではないようです.
    def __init__(self, p, q):

        self.p = p

        self.q = q

    def gcd(self,p1,q1):

        if q1==0:

            return p1

        return gcd(self,q1,p1%q1)   #error



    def __add__(self, r):

        return Rational(self.p * r.q + self.q * r.p, self.q * r.q)



    def __sub__(self, r):

        return Rational(self.p*r.q-self.q*r.p,self.q*r.q)



    def __mul__(self, r):

        return Rational(self.p*r.p,self.q*r.q)



    def __div__(self, r):

        return Rational(self.p*r.q,self.q*r.p)



    def __str__(self):

        return '%s/%s' %(self.p,self.q)



    __repr__ = __str__



r1 = Rational(1, 2)

a=r1.gcd(4,1)

print a

r2 = Rational(1, 4)

print r1 + r2

print r1 - r2

print r1 * r2

print r1 / r2