好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python学习之路(六):类

Python学习之路(六):类

Python学习之路(六):类

类与对象

通俗点说类是定义,对象是实体。

简单点说人是类,高鹏我是对象。

属性

属性有实例属性和类属性之分。

先上一段代码看看:

class Fruit:

    price = 0

 

    def __init__(self):

        self.color='red'

        zone="china"

 

if __name__=="__main__":

     print "Fruit price:%d"%Fruit.price

     apple = Fruit()

     print "apple color:%s"%apple.color

     print "apple price:%d"%apple.price

     banane = Fruit()

     print "banane color:%s"%banane.color

     print "banane price:%d"%banane.price

 

     Fruit.color="yellow"

     Fruit.price=50

 

     print "apple color:%s"%apple.color

     print "apple price:%d"%apple.price

     print "banane color:%s"%banane.color

     print "banane price:%d"%banane.price

#结果

Fruit price:0

apple color:red

apple price:0

banane color:red

banane price:0

apple color:red

apple price:50

banane color:red

banane price:50

通过类可以直接修改所有类的类属性,却不可以修改实例属性。

修改17、18行上。

class  Fruit:

    price = 0

 

    def __init__(self):

        self.color='red'

        zone=" china "

 

if  __name__==" __main__ ":

     print " Fruit price:%d "%Fruit.price

     apple = Fruit()

     print " apple color:%s "%apple.color

     print " apple price:%d "%apple.price

     banane = Fruit()

     print " banane color:%s "%banane.color

     print " banane price:%d "%banane.price

 

     apple.color=" yellow "

     apple.price=50

 

     print " apple color:%s "%apple.color

     print " apple price:%d "%apple.price

     print " banane color:%s "%banane.color

     print " banane price:%d "%banane.price

#结果

Fruit price:0

apple color:red

apple price:0

banane color:red

banane price:0

apple color:yellow

apple price:50

banane color:red

banane price:0

对实例变量修改只影响本身实例变量和本实例的类属性。

再谈一句很搞笑的。

class Fruit:

    price = 0

 

    def __init__(self):

        self.color='red'

        zone="china"

 

if __name__=="__main__":

     print "Fruit price:%d"%Fruit.price

     apple = Fruit()

     print "apple price:%d"%apple.price

     banane = Fruit()

     print "banane price:%d"%banane.price

 

     apple.price=30

     Fruit.price=50

 

     print "apple price:%d"%apple.price

     print "banane price:%d"%banane.price

#结果

Fruit price:0

apple price:0

banane price:0

apple price:30

banane price:50

如果实例修改了类属性就会脱离类属性。

类的方法

class Fruit:

    price = 0

 

    def __init__(self):

        self.color='red'

        zone="china"

    def printColor(self):

        print "color:"+self.color

    def printPrice(self):

        print "price:%d"%self.price

    @staticmethod

    def printStatic():

        print "static"

 

 

 

if __name__=="__main__":

    Fruit.printStatic()

    apple = Fruit()

    apple.printStatic()

    apple.printPrice()

    apple.printColor()

普通方法自带self参数,可以通过self访问实例属性和类属性。而静态方法不自带self参数,也不能通过self访问实例参数和类参数。

class Fruit:

    price = 0

    @staticmethod

    def printStatic():

        print Fruit.price

 

if __name__=="__main__":

    Fruit.printStatic()

它只能通过类直接访问。

构造函数和析构函数

class Fruit:

    count=0

    def __init__(self):

        print "我被调用了"

 

    def __del__(self):

        print "我也不幸被调用了"

 

if __name__=="__main__":

    apple = Fruit()

#结果

我被调用了

我也不幸被调用了

 

 

class Fruit:

    count=0

    def __init__(self):

        print "我被调用了"

 

    def __del__(self):

        print "我也不幸被调用了"

 

if __name__=="__main__":

    apple = Fruit()

    Fruit.count

#结果

我被调用了

我也不幸被调用了

还类初始化和销毁的时候被调用。

而类被调用的时候不会被自动调用。

总结

这次对类做了一些基本的介绍。下一次我们谈谈继承、多态。

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Python学习之路(六):类的详细内容...

  阅读:48次