面向对象的编程三大特性:封装、继承和多态。
python类的定义
以关键字class开始,接着类名(如Student),然后是继承可选项,以括号表示,表示当前类继承于哪个类,然后以冒号结束本行;冒号之后的后续行(注意缩进)即为类体。例如:
class Student(object):
def __init__(self): ## 构造器方法
self.name = "a" ## 属性
self.age = 10 ## 属性
def getName(self): ##方法
pass
创建对象:如 bstu = Student()
注意:类方法和普通函数的区别就是每一个类中定义的方法的第一个参数永远是实例变量self,记录该对象的属性信息,且调用时不需要传入该参数,python解释器会自动传入;而普通函数没有。
类方法和属性的访问限制
python中,如果要让内部的属性或方法不被外部访问,可以在属性名前加上两个下划线,如此,该属性就变成私有的变量,只有内部可以访问,而外部不可访问。例如,可以对Student类做如下修改:
class Student(object):
def __init__(self): ## 构造器方法
self.__name = "a" ## 属性
self.__age = 10 ## 属性
def getName(self): ##方法
pass
将类的属性变为私有后,外部无法访问,此时需要编写该属性的set方法和get方法。
注意:python中的变量名或方法名为 __xxx__ (双下划线开始,双下滑线结束)形式的,为特殊变量,特殊变量不是私有变量,外部可以访问,
继承和多态
与C++或java很相似,由于本人对C++比较熟悉,所以这部分不细讲,只以一个实例展示
## 继承和多态
class Base(object):
def run(self):
print "Base is running"
class D1(Base):
def run(self): ## 子类继承了父类的run方法,但是在此处覆盖了父类的方法
print "D1 is running"
class D2(Base):
def run(self):
print "D2 is running"
base = Base()
base.run()
base = D1()
base.run()
base = D2()
base.run()
结果为:
Base is running
D1 is running
D2 is running
注意:判断一个变量是否是某个类型可以用
isinstance()判断对象信息获取
1、使用type()
python内置的type函数返回该函数参数的类型。
例如:
type(10); ## int类型数据
type(abs): ## 内置的函数
2、使用isinstance()
可以通过isinstance函数是判断变量是否是某种类型,或者一些类型中的一种。
如:
isinstance(10, (int, float) )
3、使用dir()
使用dir函数,可以获得对象的所有属性和方法,该函数返回的是一个包含字符串的list。
getattr()、setattr()和hasattr()三个函数可以获取、设置对象的属性和判断对象是否拥有某属性。并且,如果试图获取一个不存在的属性,或抛出AttributeError错误。

浙公网安备 33010602011771号