首页 > 其他 > 详细

类方法,实例方法,

时间:2015-05-26 18:07:49      阅读:207      评论:0      收藏:0      [点我收藏+]

类方法必须要有一个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()

  一个实例会先寻找自己的属性,然后再寻找类属性,如上述代码,p1.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

 

类方法,实例方法,

原文:http://www.cnblogs.com/alex21/p/4531013.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!