教为学: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
#结果
我被调用了
我也不幸被调用了
还类初始化和销毁的时候被调用。
而类被调用的时候不会被自动调用。
总结
这次对类做了一些基本的介绍。下一次我们谈谈继承、多态。相关文章推荐
- 教为学:Python学习之路(六):类
- 教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql
- 教为学:Python学习之路(四):字符串
- 教为学:Python学习之路(五):map reduce学习
- 教为学:python学习之路(一):python源码安装
- 教为学:Python学习之路(三):序列
- 教为学:Python学习之路(五):map reduce学习
- 教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql
- 教为学:Python学习之路(四):字符串
- 教为学:python学习之路(一):python源码安装
- 教为学:Python学习之路(三):序列
- 【Python学习之路】My Third journey
- Python学习之路8——Python对象2
- 开启python学习之路
- Python学习之路---Python字典
- 学习python之路---python小算法总结(四)
- 我的python学习之路----发送带附件邮件(基于smtp)
- python3 学习之路3
- 我的python学习之路
- Python学习之路-基础知识2-文件操作