成都9班-陈云 发表于 2021-11-21 20:20:10

Python第八天学习--类与对象的了解(封装继承多态)

第八天Python学习--类和对象篇

[*]类


[*]    定义:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。   


[*]对象


[*]   定义:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。



[*]实例化



[*]根据类创建对象的过程,就叫做实例化


封装
定义:根据职责将属性和方法封装到一个抽象的类中将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。不关心方法1.内部的具体实现,从而隔离了复杂度2.封装是面向对象编程的一大特点3.面向对象变成的第一步。将属性和方法封装到一个抽象的类中。4.外界使用类创建对象,然后让对象调用方法5.对象方法的细节都封装在类的内部


继承
实现de重用,相同的代码不需要重复编写继承的语法格式class 类名(父类名):      pass1.子类继承父类,可以直接享受父类中已经封装好的方法,不需要再次开发2.子类中应该根据职责,封装子类特有的属性和方法继承的传递性:子类拥有父类以及父类和父类中封装的所有属性和方法      
多继承
概念:子类可以拥有多个父类。并且具有父类的属性和方法。注意:如果不同的父类拥有相同的属性名或者相同的方法名,子类对象在调用方法和属性时,会调用哪个父类呢?

多态
1.不同的对象,调用相同的方法,产生不同的执行结果,增加代码的灵活度2.多态可以增加代码的灵活度3.以继承和重写父类方法为前提4.是调用方法的技巧,不会影响到类的内部设计


创建一个实例
class People(object):   # 使用class作为关键字,类名使用首字母大写。      def __init__(self,name): # object理解为万物之源      self.name=name    # self.name 实例变量 self代表实例本身human=People("小王")         #创建一个对象print(human.name)class People:         #经典类,默认继承object   pass


创建的例子
class People:    # 定义基本属性    name=""    age=""    # 定义私有属性    __weight= 0    # 定义构造函数    def __init__(self,n,a,w):      self.name=n      self.age=a      self.__weight=w    def speak(self):      print("%s 说 %d 岁."%(self.name,self.age))# 实例化对象p=People("ruubo",10,30)p.speak()

类和对象的关系梳理
class People:    name=""    def __init__(self,name,age):      self.n=name      self.a=age    def func(self):      print("你好")    @classmethod    def func1(cls):      print("you are stupid")    @staticmethod    def func2():      print("you love me")p=People("小王",18)p.func()         # 创建一个对象People.func()    # 对象调用实例方法p.func1()      # 对象调用类方法People.func1()   # 类调用类方法p.func2()      # 对象调用静态方法People.func2()   # 类调用静态方法第一种同时继承多个类class Father(object):    def __init__(self):      pass    def rich(self):      print("我是迪拜皇子很有钱")    def car(self):      print("我有很多的豪车")class Mother():    def beautiful(self):      print("天使的面容,魔鬼般的身材")class Son(Father,Mother):    def __init__(self):      pass    def young(self):      print("我有八块腹肌,体脂率为%3")    def study(self):      print("我是研究生毕业")f=Father()# 创建父类s=Son()   # 创建子类f.rich()    # 父类调用自己方法f.car()   # 父类调用自己方法s.rich()    # 子类调用父类的方法s.car()   # 子类调用父类的方法s.young()   # 子类调用自己的方法f.young()   # 父类不能调用子类的方法class Groundfather(object):    def __init__(self):      pass    def rich(self):      print("为孙子打下的江山")    def house(self):      print("家宅丰厚")class Father(Groundfather):    def __init__(self):      pass    def money(self):      print("我有很多的财产")    def compeny(self):      print("我有很多的公司")class Son(Father):    def __init__(self):      pass    def young(self):      print("我是一个很小的孩子")s=Son()f=Father()g=Groundfather()s.rich()    # 孙子类对象,调用爷爷类方法s.house()   # 孙子类对象,调用爷爷类方法s.money()   # 孙子类对象,调用父亲类方法s.compeny() # 孙子类对象,调用父亲类方法f.money()   # 父类对象,调用自己类方法f.rich()    # 父类对象,调用爷爷类方法g.rich()    # 爷爷类对象,调用自己类方法g.house()   # 爷爷类对象,调用自己类方法




面试问到的相关问题:
1.简述面向对象的三大特性:A.封装:封装指的是把一堆数据属性与方法数据放在一个容器中,这个容器就是对象,让对象通过“ . ”来调用对象中的数据属性与方法属性。B.继承:继承指的是子类可以继承父类的数据属性与方法属性,并可以对其进行修改或使用C.多态:指的是让多类具备类似的数据属性与方法属性,都统一好命名规范,提高开发者的代码统一性,调用者方便理解。2.静态方法和类方法区别?静态方法:实例方法:第一个参数是self不要额外的参数类方法:类方法:第一个参数是class3.下列数据结构中,哪一种是不可迭代的?'''       A.dict       B.object       C.set       D.str'''常见的可迭代对象包括:集合数据类型:list,tuple,dict.set.str等生成器(generator),包括生成器和带yield的生成器函数(generator function)答案:B    4.关于Python类的继承不正确的说法是?(多选)A.Python类无法继承B.可以继承,无法执行父类的构造函数C.可以有多个父类D.只能有一个父类答案:'''ABD'''5.类的加载顺序(类中有继承有构造有静态)?1.在堆内存中生成class对象,把静态变量和静态方法加载到方法区,这个堆内存中的class对象是方法区数据的入口2.静态变量默认初始化3.静态变量显示初始化4.执行静态代码块5.成员变量默认初始化,显示初始化6.执行构造函数。               




页: [1]
查看完整版本: Python第八天学习--类与对象的了解(封装继承多态)