python也是一门面向对象编程的语言,也有类和对象的说法,这里的许多概念和C++,Java里面一样,因此不再详细说明。
类的创建
python中的类由变量和函数两部分组成,类中的变量称之为成员变量,类中的函数称之为成员函数。
和C++中定义类一样,python中也是用class 定义一个类,格式为 class 类名 :,类名的首字母一般要大写。
类将需要的变量和方法组合在一起称之为封装。
类的创建示例:
class Student:
def information(self):
print "I am a student!"
对象的创建
if __name__ == "__main__":
stu = Student()
print stu.information()
输出:I am a student!
属性和方法
类的属性分为公有和私有属性。类的私有属性不能被类之外的函数调用,类的属性作用范围完全取决于属性的名称。如果函数,方法或者属性的名字前面以两个下划线开始,则表示私有属性。没有以下划线开始的表示私有属性,python中没有保护属性,这点和C++不一样。
python中的属性分为实例属性和静态属性。实例属性是以self作为前缀的属性。__init__即为python的构造函数。如果__init__方法里定义的变量也没有以self作为前缀,则该变量只是普通的局部变量。类中其他方法定义的变量也属于局部变量。
在python中静态变量称之为静态属性。可以被类直接调用而不需要实例化对象调用。
下面示例实例属性和类属性的区别:
class Fruit:
price = 0 #类属性
def __init__(self):
self.color = "red" #实例属性
zone = "China" #局部变量
if __name__ == "__main__":
print Fruit.price #是类变量输出:0
apple = Fruit()
print apple.color #输出:red
Fruit.price = Fruit.pricr + 10 #输出:10
print "apple's price:" + str(apple.price) #注意强制转换
banana = Fruit()
print "banana's price:" + str(banana.price) #输出:10
注意:类的外部不能直接访问私有属性,如果把corlor改为__corlor,当执行下列语句时,python解释器不能识别__corlor属性。
print fruit.__corlor
python 提供了直接访问私有属性的方法,用于测试和调试:
instance.__classname__attribute
instance表示示例化对象, classname表示类名, attribute表示私有属性。
演示访问私有属性(由于存在安全问题,所以不提倡这样使用):
class Fruit:
def __init__(self):
self.__color = "red" #私有属性
if __name__ == "__main__":
apple = Fruit()
print apple.__Fruit__color
类提供了一些内置属性,用于管理类的内部关系,例如,__dict__ , __base__ , __doc__等。
下面演示常用内置属性使用方法示例:
class Fruit:
def __init__(self):
self.__color = "red"
class Apple(Fruit): #Apple 继承了Fruit
pass
if __name__ == "__main__":
fruit = Fruit()
apple = Apple()
print Apple.__bases__ #输出基类组成的元组
print apple.__dict__ #输出属性组成的字典
print apple.__module__ #输出类所在的模块名
print apple.__doc__
阅读(1162) | 评论(0) | 转发(0) |