龙空技术网

python四大特性(封装,继承,重写,多态)

至尊小狸子 703

前言:

当前大家对“python具备的特点”大概比较着重,大家都需要分析一些“python具备的特点”的相关知识。那么小编同时在网摘上搜集了一些对于“python具备的特点””的相关文章,希望大家能喜欢,姐妹们快快来学习一下吧!

继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基类,新的类称为子类或派生类。通过继承不仅可以实现代码的重用,还可以理顺类与类之间的关系。

重写:父类的成员都会被子类继承,当父类中某个方法不完全适用子类,就需要在子类中重新父类方法。在子类中如果定义了__init__()方法时,子类是不会自动调用父类的__init__()方法,此时如果不手动添加,运行代码就会报错。需要在子类使用super()函数调用父类的__init__()方法,而且必须在首行。

封装:提高程序安全性,将属性、类包装到类中。python 中没有专门到修饰符用于属性到私有,如果属性不希望在类对象外部被访问,可以使用两个'_'

多态让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数。可以理解为一个事物的多种形态。调用同一个函数,传入不同的参数,实现不同的功能。

代码中还写了一些特殊的方法和特殊属性,可以注意下!!!

'''封装: 提高程序安全性,将属性、类包装到类中python 中没有专门到修饰符用于属性到私有,如果属性不希望在类对象外部被访问,可以使用两个'_''''class Studen:    def __init__(self,name,age):        self.name = name        self.__age = age   #不希望age在外部使用,前面加两个__    def show(self):        print('nihal',self.name,self.__age)    def __run(self):   #私有方法        passst = Studen('za',18)st.show()print(st.name)# print(st.age)   #不能访问age,因为age私有,但可以通过下面访问print(dir(st))   #可以查看属性和方法print(st._Studen__age)  #在类但外部可以通过,_Studen__age这种方式访问'''继承:提高代码复用性class  子类名(父类1,父类2,父类3.....):    pass如果一个类没有继承任何一个类,则默认继承object【注意】在继承中,子类但构造函数必须调用父类但构造函数'''class Person:    def __init__(self,name,age):        self.name = name        self.age = age    def info(self):        print('姓名{0},年龄{1}'.format(self.name,self.age))class Student(Person):    def __init__(self,name,age,score):        super().__init__(name,age)   #子类继承父类,在构造函数中必须用super调用父类构造函数        self.score = score    def run(self):        print(f'score is {self.score}')    def info(self):         #重写父类方法        super().info();     #调用父类方法        print(f'score is {self.score}')st = Student('ge',29,100)st.info()'''重写父类方法,super().父类方法'''st.info()    #重写之后,先调用自己但方法'''object类: '''class Teacher(Person):    def __init__(self):        pass    def __str__(self):        print("重写此方法,返回对类对象但描述")'''多态:具有多种形态,不知道一个变量所引用但对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象但类型,动态决定调用哪个对象中但方法java是静态语言,其实现多态的三个必要条件1、继承2、方法重写3、父类引用指向子类对象动态语言崇尚"鸭子类型",只关注对象行为,不必关注对象'''class Animal:    def eat(self):        print('动物会吃')class Dog(Animal):    def eat(self):        print('狗吃肉')class Cat(Animal):    def eat(self):        print('猫吃鱼')class Person:    def eat(self):        print('人吃五谷杂粮')    def __add__(self, other):        return  self.name +other.name#定义一个函数def fun(obj):    obj.eat()fun(Cat())fun(Dog())fun(Animal())fun(Person())  #多态'''特殊方法和特殊属性属性:__dict__: 获得对象或实例对象所绑定的索引属性和方法的字典属性:__len__():通过重写__len__()方法,让内置函数len()的参数可以是自定义类型方法:__add__():通过重写__add__()方法,可是自定义对象具有'+'功能方法:__new__():用于创建对象方法:__init__():创建的对象进行初始化'''p = Person()print(p.__dict__) #实例对象的print(Person.__dict__)   #类的print(p.__class__)   #对象所属的类c = Cat()print(Cat.__base__) #父类元素,如果有多个父类,用basesa=10b=30c = a+bprint(c)c = a.__add__(b)print(c)p1 = Person()p1.name = 'zhang'p2 = Person()p2.name = 'san'print(p1.__add__(p2))print(p1+p2)   #因为在Person类中写了__add__()方法,才能使用相加'''__new__与__init____new__ : 在前创建对象__init__:对已经创建的对象初始化'''class Car:    def __new__(cls, *args, **kwargs):        pass    def __init__(self):        pass

标签: #python具备的特点