Python高级编程
Posted sylover
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python高级编程相关的知识,希望对你有一定的参考价值。
Python学到现在感觉难到爆,真不知道那些大佬是怎么做到自学之后就可以写框架的。(简直绝望)
1.面向对象:高级编程语言中最重要的概念,也是不同于底层语言的地方。
创建class(类)
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__
方法,在创建实例的时候,就把name
,score
等属性绑上去:
class Student(object): def __init__(self, name , score): self.name = name self.score = score
注意到__init__
方法的第一个参数永远是self
,表示创建的实例本身,因此,在__init__
方法内部,就可以把各种属性绑定到self
,因为self
就指向创建的实例本身。
向类中传入参数时候,self这个参数是不需要变量的
class Student(object): def __init__(self, name , score): self.name = name self.score = score test = Student(‘jack‘,59) print test.name print test.score
数据封装
面向对象编程的一个重要特点就是数据封装。在上面的Student
类中,每个实例就拥有各自的name
和score
这些数据。我们可以通过函数来访问这些数据,比如打印一个学生的成绩:
class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print(‘%s: %s‘ % (self.name, self.score)
访问限制
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。
但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name
、score
属性:
>>> bart = Student(‘Bart Simpson‘, 59) >>> bart.score 59 >>> bart.score = 99 >>> bart.score 99
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__
,在Python中,实例的变量名如果以__
开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
class Student(object): def __init__(self, name, score): self.__name = name self.__score = score def print_score(self): print(‘%s: %s‘ % (self.__name, self.__score))
但是如果外部代码要获取name和score怎么办?可以给Student类增加get_name
和get_score
这样的方法:
class Student(object): ... def get_name(self): return self.__name def get_score(self): return self.__score
定义一个get_name函数 然后返回值是需要的那个值就可以了。
以上是关于Python高级编程的主要内容,如果未能解决你的问题,请参考以下文章
Python高级编程(第2版) 中文完整pdf扫描版[76MB]