码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习笔记——面向对象基础

时间:2016-08-23 11:41:57      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

1.类和实例

  1.1类的定义

  类的定义使用class关键字,其后紧跟类名(通常大写开头),紧接着是(object),object是该类继承的类名,没有就继承object类。

  实例化时就是类名+(),有参数需要传入参数。

class Student(object):
    pass
bart = Student()

   类的属性定义在_init_方法中(相当于java的构造方法),该方法的第一个参数永远是self,在实例化时必须传入相应的参数(除self外)

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score
bart = Student(‘Bart Simpson‘, 59)

   1.2方法的参数

  类方法的参数第一个必须是self,而且不用传入。其余的参数和普通函数无异,也可以使用默认参数,可变参数和关键字参数。

  1.3关于实例变量

  因为python是动态语言,允许对实例添加新的变量,所以一个类的两个实例变量个数和名称不一定相同。

1 >>> bart = Student(Bart Simpson, 59)
2 >>> lisa = Student(Lisa Simpson, 87)
3 >>> bart.age = 8
4 >>> bart.age
5 8
6 >>> lisa.age
7 Traceback (most recent call last):
8   File "<stdin>", line 1, in <module>
9 AttributeError: Student object has no attribute age

2.访问限制

  在Python中,实例的变量名如果以__(双底杠)开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。外部要获取或更改该变量值可以通过set,get方法,set方法内部还需要进行参数检查。此外双底杠开头双底杠结尾的变量是特殊变量,变量命名时不要用这种方式命名。

1 class Student(object):
2 
3     def __init__(self, name, score):
4         self.__name = name
5         self.__score = score

3.继承与多态

  python的继承与多态和java类似,遵循“开闭原则”:对扩展开放,对修改封闭。但python支持多重继承,如果父类有相同的方法,调用时会从左到右搜索,其余部分后面专门会讲。

4.获取对象信息

  4.1 type函数:type(object),返回type类型

  4.2 isinstance函数:isinstance(实例,类名),返回布尔值

  4.3 dir函数:dir(object),返回一个包含该对象所有方法,属性的字符串list

  4.4 __xxx__的属性和方法在Python中都是有特殊用途的,例如__len__方法,下面两种用法等价:(个人认为一种是函数写法,一种是类方法写法)

1 >>> len(ABC)
2 3
3 >>> ABC.__len__()
4 3

  4.5 getattr()setattr()以及hasattr()函数:可以直接操作一个对象的状态。如下所示:

 1 >>> hasattr(obj, x) # 有属性‘x‘吗?
 2 True
 3 >>> obj.x
 4 9
 5 >>> hasattr(obj, y) # 有属性‘y‘吗?
 6 False
 7 >>> setattr(obj, y, 19) # 设置一个属性‘y‘
 8 >>> hasattr(obj, y) # 有属性‘y‘吗?
 9 True
10 >>> getattr(obj, y) # 获取属性‘y‘
11 19
12 >>> obj.y # 获取属性‘y‘
13 19

  可以传入一个default参数,如果属性不存在,就返回默认值:

1 >>> getattr(obj, z, 404) # 获取属性‘z‘,如果不存在,返回默认值404
2 404

 

Python学习笔记——面向对象基础

标签:

原文地址:http://www.cnblogs.com/airzsblog/p/5798472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!