您的位置:首页 > 编程语言 > Python开发

教为学:Python学习之路(六):类

2013-06-08 18:00 441 查看

教为学: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

#结果

我被调用了

我也不幸被调用了

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

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

总结

这次对类做了一些基本的介绍。下一次我们谈谈继承、多态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: