Python3 基础:面向对象编程(上)
来源:互联网 发布:r语言编程艺术 pdf 编辑:程序博客网 时间:2024/05/15 01:27
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。
在Python中,定义类是通过class关键字.
class Student(object): pass
解释: class表示定义一个类,Student表示类名,紧接着是(object),表示该类是从哪个类继承下来的.
创建实例是通过类名()
实现的
kd = Student()
继续向下看:
class Student(object): def __init__(self, name, score): self.name = name self.score = score
注意到__init__
方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__
方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。 __init__
方法就类似于java的构造函数.
和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self
,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别.
访问限制
如果要让类内部属性不被外部访问,可以把属性的名称前加上两个下划线 __,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问.
class Student(object):def __init__(self, name, score): self.__name = name self.__score = scoredef print_score(self): print('%s: %s' % (self.__name, self.__score))
改完后,对于外部代码来说,没什么变动,但是已经无法从外部访问实例变量.__name和实例变量.__score了.
如果你通过对象实例访问属性,会报错
AttributeError: 'Student' object has no attribute '__name'
这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。
如果要访问private的属性可以增加set get 方法.(和java一个套路)
在Python中,变量名类似__xxx__
的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__、__score__这样的变量名。
有些时候,你会看到以一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。
双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是。不能直接访问__name是因为Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量,但是强烈建议你不要这么干,因为不同版本的Python解释器可能会把__name改成不同的变量名。
- Python3 基础:面向对象编程(上)
- Python3 基础:面向对象高级编程(上)
- Python3 基础:面向对象编程(下)
- Python3 基础:面向对象高级编程(中)
- Python3 面向对象编程
- python3面向对象编程一(类)
- Python3面向对象编程笔记(一)
- Java编程基础-面向对象(上)
- 面向对象编程(上)
- ## 面向对象编程上 ##
- 面向对象编程(上)
- python3中对 面向对象 的一些理解(基础)
- Python3学习笔记(7)—— 面向对象编程
- 面向对象编程基础
- 面向对象编程基础
- java基础3--面向对象(上)
- Java基础面向对象(上)
- Objective-C基础(面向对象-上)
- Android Activity 生命周期
- numpy.random.shuffle打乱顺序函数
- MongoDB 学习三(数据库的增删改查)
- LeetCode 82. Remove Duplicates from Sorted List II
- 图解符号链接和硬链接的区别和i节点的介绍
- Python3 基础:面向对象编程(上)
- LeetCode 61. Rotate List
- 认识TexturePacker的界面
- 手机微信目录
- 闪回数据归档实验(Flashback Data Archive)
- c语言学习100例(1-5)
- 贝叶斯公式中各项的理解
- Java发送邮件
- 缩小的陆地