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 \\静态方法调用不会传参数