2.7 面向对象介绍

面向对象是编程的一种方法

数值就是数值对象,字符串就是字符串对象等等

面向对象 C++,java,python等

面向过程 C ,shell等

类和对象:这是面向对象中的两个重要概念

类:是对事物的抽象,比如人类、球类……

对象:是类的一个实例,比如足球、篮球……

实例说明

球类可以对球的特征和行为进行抽象,然后可以实例化一个真实的球实体出来

面向对象的主要思想

封装

继承

多态

这种思想方便解决较为复杂的项目,且维护起来比较容易

类定义

类把需要的变量和函数组合在一起,这种包含被称为封装

class A(object):

类的结构:

class 类名:

成员变量-属性成员函数-方法

>>> class People(object):
...     name = 'zx'
		def think(self):  \\定义的函数必须有self
			print 'thinking'
...
>>> a = People()   \\实例化
>>> print people
<__main__.People object at 0x7fb9e3403c90>
>>> a.think()  \\调用think方法
thinking

2.8 类的属性

类是由属性和方法组成的,属性可以叫做成员属性,方法可以叫做成员方法

class People(object):
	name = 'zx'  \\属性
	def think(self):  \\方法
		print 'thinking'

对象的创建

创建对象的过程曾称之为实例化;当一个对象被创建后,包含三个方面的特性:对象句柄,属性和方法。

句柄用于区分不同的对象

对象的属性和方法与类中的成员变量和成员函数对应

oji=MyClass() \创建类的一个实例(对象)通过对象来调用方法和属性

类的属性

类的属性按使用范围分为公有属性和私有属性,类的属性范围取决于属性的名称。

公有属性:在类中和类外都能调用的属性

私有属性:不能在类外以及被类以外的函数调用;定义方式, 已“__”双下划线开始的成员变量就是私有属性;可以通过instance.__classname__attribute方式访问

内置属性:有系统在定义类时默认添加的,右前后双下划线构成, _dic_, _module_

class ClassA(object):
	pub = 'pub'
	__pri = 'pri'
	def show(self):
		print self.pub
		print self.__pri

classa = ClassA
classa.pub = 'newpub' \\可以在外部修改共有属性

2.9 类的方法

方法的定义和函数一样,但是需要self作为第一个参数

类的方法有:公有方法、私有方法、类方法和静态方法。

类方法:被classmethod()函数处理过的函数,能被类所调用,也能被对象所调用(是继承的关系)

静态方法:相当于“全局函数”,可以被类直接调用,可以被所有实例化对象共享,通过staticmethod()定义,注意静态方法没有self参数

class ClassA(object):
	pub = 'pub'
	__pri = 'pri'
	def show(self): \\公有方法
		print self.pub
		print self.__pri

	def new(self):
		self.think()  \\调用公有方法

	def __mypri(self): \\私有方法,不能在外部调用
		pass
classa = ClassA

类方法classmethod()

class ClassA(object):
	pub = 'pub'
	__pri = 'pri'
	def show(self): \\公有方法
		print self.pub
		print self.__pri
	test = classmethod(show)

classa = ClassA()
ClassA.test  \\直接调用show方法

静态方法

class ClassA(object):
	pub = 'pub'
	__pri = 'pri'
	def show():
		print self.pub
		print self.__pri
	test = staticmethod(show)

classa = ClassA()
classa.test \\静态方法调用不会传参数
12-05 07:38