python面向对象编程

1.类和实例java

类是抽象的模板,而实例是根据类建立出来的具体对象python

class Student(object):函数

       def __init__(self,name,score):
             self.name = name
             self.score =scorespa

       def print_score(self):
             print('%s : %s' % (self.name,self.score))调试

bart = Student('Bart Simpson',99)
bart.print_score()code

2.类的内部的访问限制对象

变量前加上两个下划线表示对外隐藏该字段,若是须要访问,须要编写相关的get和set方法继承

以双下划线开头和结尾的变量为特殊变量,能够直接访问。字符串

以一个下划线开头的变量能够访问,但不推荐这样。(python没有机制阻止,一切靠自觉)get

3.多态和继承

多态:当须要传入父类的多个子类时,只须要在定义时将父类传入,在实际调用时,子类就会调用实际的方法

开闭原则:对扩展开放,对修改封闭

python相对于java来讲是动态语言,父类传参数不是必须的,但须要确保内部有方法能够调用

4.获取对象信息

type(str)来判断对象类型    isinstance(a,b)用来判断class的类型(a是否为b)   

type能够被isinstance来替代 (老是优先使用isinstance类型)

5.实例属性和类属性

实例属性属于各个实例全部,互不干扰;

类属性属于类全部,全部实例共享一个属性;

不要对实例属性和类属性使用相同的名字。

6.使用@property

使用property装饰器目的是限制类中属性的取值或是否可读,即对参数进行检查

7.多继承模式

不一样于java中的单继承,多实现的方式,pthon中使用的为多继承方式。以最顶层父类为主,其余类用Mixin修饰。

class Dog(Mammal, RunnableMixIn, CarnivorousMixIn):

8.定制类

__str__() /__repr__():返回字符串打印。区别:repr用来程序调试的

__iter__()/__next__():用于可迭代对象进行循环

__getitem__():取可迭代对象中的元素

__getattr__():动态修改属性的取值

__call__():对实例进行调用    能够把对象看做函数,把函数看做对象

9.枚举类

python提供Enum('')来对多个元素进行枚举

10.动态建立类

python是动态语言,函数和类的定义是在运行时建立的

能够经过type()方法进行建立,还能够经过元类方式建立

相关文章
相关标签/搜索