python面向对象基础
来源:互联网 发布:win7网络登录密码 编辑:程序博客网 时间:2024/05/19 17:47
类是实例的模版,实例是根据类创建的一个具体对象,每个对象都有相同的方法,但是各自的数据不同。
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__
,在Python中,实例的变量名如果以__
开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
当子类和父类都存在相同的run()
方法时,我们说,子类的run()
覆盖了父类的run()
,在代码运行的时候,总是会调用子类的run()
。这样,我们就获得了继承的另一个好处:多态。态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。
使用__slots__
但是,如果我们想要限制实例的属性怎么办?比如,只允许对Student实例添加name
和age
属性。
为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__
变量,来限制该class实例能添加的属性:
class Student(object): __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
Python内置的@property
装饰器就是负责把一个方法变成属性调用的:
class Student(object): @property def score(self): return self._score
_iter__
如果一个类想被用于for ... in
循环,类似list或tuple那样,就必须实现一个__iter__()
方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的__next__()
方法拿到循环的下一个值,直到遇到StopIteration
错误时退出循环。
我们以斐波那契数列为例,写一个Fib类,可以作用于for循环:
class Fib(object): def __init__(self): self.a, self.b = 0, 1 # 初始化两个计数器a,b def __iter__(self): return self # 实例本身就是迭代对象,故返回自己 def __next__(self): self.a, self.b = self.b, self.a + self.b # 计算下一个值 if self.a > 100000: # 退出循环的条件 raise StopIteration(); return self.a # 返回下一个值
动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。
0 0
- Python面向对象基础
- python面向对象基础
- python 面向对象基础
- python面向对象基础
- python 面向对象 基础
- Python基础-面向对象基础
- python面向对象编程基础
- Python 基础08 面向对象
- Python基础08 面向对象
- Python面向对象编程基础
- Python面向对象编程基础
- python面向对象编程基础
- python 面向对象编程-基础
- python的面向对象基础
- Python面向对象编程基础
- python基础—面向对象
- python基础-----面向对象编程
- Python面向对象(基础整理)
- HTML中href和src的区别
- Kubernetes DNS服务的安装与配置
- Java笔记整理:复用类
- 数字电视前端的时间同步
- Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示
- python面向对象基础
- codevs 2033 邮票(背包)
- Linux shell 入门
- 基于Linux下C/C++的网络编程之进程
- Mac用的VPN
- LED跑马灯-位操作
- 面向对象的理解
- AUC与ROC
- Java中String、StringBuffer及StringBuilder的区别