python中的oop
来源:互联网 发布:央视 数据新闻 编辑:程序博客网 时间:2024/05/11 18:04
1. 要分清楚“类”和“实例”,类和实例都是一种类型
class MyClass: //定义一个类 'define a class' foo=0//定义一个static变量 def func(self)://定义一个static 的方法 print self.foo
classinstance=MyClass() //创建一个实例print type(myclass)print type(MyClass)打印:<type 'instance'><type 'classobj'>2.方法(python中不能重载)
myclass=MyClass() //创建一个实例myclass.func() //调用类中的一个方法MyClass.func(myclass) //另一种调用类中的方法3.类中的变量
class MyClass: 'define a class' foo=0 var=0 def func(self): print self.foo,'---',self.var myclass=MyClass()myclass.func()myclass.foo=10MyClass.func(myclass)MyClass.var=1000MyClass.func(myclass)myclass1=MyClass()myclass1.func()myclass1.foo=100MyClass.func(myclass1)打印:0 --- 010 --- 010 --- 10000 --- 1000100 --- 10004.类的构造函数和析构函数
def __init__(self,foo,var='1111'): self.foo=foo self.var=var其中析构函数一般不用:__del__
5.继承(可以多继承)
class OtherClass(MyClass): var2=0 def __init__(self,foo,var): MyClass.__init__(self, foo, var) self.var2='111111111111' def otherfunc(self): self.func() print self.var2
总结:在class定义中的都是静态变量,如果用MyClass.var=10这样的方式可以修改类中的静态变量。需要要在实例添加实例的成员变量,可以用myclass.foo=1000 这样就会添加一个foo的成员变量,修改myclass实例中的成员变量foo不会影响这个类的其他实例,如果这个类中原来就有foo 的静态变量,也不会影响。
用某一个实例.一个成员变量,如果这个成员变量没有在这个实例中,这个动作将会添加一个成员变量到这个实例中,同时在class类中的函数中也可以通过self.一个成员变量 添加一个成员到某个实例中。
class MyClass: 'define a class' foo=0 var=0 def __init__(self,foo,var='1111'): self.foo=foo self.var=var def func(self): var4=90000000 print self.foo,'---',self.var,'----',var4 myclass=MyClass('sun',190)myclass.func()print myclass.var4 #这句话不对,因为没有var4变量,如果在fuc函数中将var4前面添加self. 就可以了,因为self.一个变量,会将这个变量添加到该实例中,但是上面程序中的var4就是一个普通的临时变量类中的特殊属性比较后面都实例的特殊属性:
__name__ : 类的字符串名字
__doc__: 类的文档字符串
__bases__: 类的父亲表列
__dict__: 类的属性 这个重要
__module__:对类进行定义的模块
print '__name__: '+str(MyClass.__name__)print '__doc__: '+str(MyClass.__doc__)print '__bases__: '+str(MyClass.__bases__)print '__dict__: '+str(MyClass.__dict__)print '__module__: '+str(MyClass.__module__)print dir(MyClass) 打印类属性myclass.func()print dir(myclass) 打印实例属性
打印:__name__: MyClass__doc__: define a class__bases__: ()__dict__: {'__module__': '__main__', 'func': <function func at 0x00BA0570>, 'var': 0, 'foo': 0, '__doc__': 'define a class', '__init__': <function __init__ at 0x00BA05B0>}__module__: __main__(<class __main__.MyClass at 0x00ACA510>,)
['__doc__', '__init__', '__module__', 'foo', 'func', 'var']sun --- 190 ---- 90000000['__doc__', '__init__', '__module__', 'foo', 'func', 'var', 'var4']//这里为什么多多一个var4,因为在func中添加了一个成员变量
实例的特殊属性:
__class__: 实例化出这个实例的类
__dict__: 实例的属性
print myclass.__class__print myclass.__dict__打印:
__main__.MyClass 类的名称
{'var': 190, 'foo': 'sun'} 实例中的属性
内建类型的属性:
内建类型不想类和实例一样有属性字典__dict__,python中内建类型有两个特殊的属性__methods__和__members__,查看方法或者数据属性
- python中的oop
- Python中的类与OOP
- Python OOP中的封装与容器小结
- Python OOP
- Python OOP
- python oop
- python学习-OOP
- python关于oop
- Basic OOP in Python
- OOP in python DEMO
- 初学Python-OOP
- Python OOP知识积累
- Python Study OOP
- Python OOP Practice
- python:oop范式
- Python面向对象oop
- Python面向对象oop
- Flash 中的OOP(上)
- Jquery实现div拖拽
- C++中的数组形参
- JSP标签库大全
- 晨钟暮鼓----用青春,做这份爱情的血色葬礼
- JVM 垃圾回收机制与GC性能调优
- python中的oop
- hdoj1158
- 文艺编程 Literate Programming (原文中英文对照)
- Intent和PendingIntent的区别
- Android ContentProvider
- 如何在Eclipse中打开已经存在的工程
- rpm文件介绍及其安装方法
- 一个牛人给java初学者的建议
- libcurl使用心得