栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python--类和对象的基础知识

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python--类和对象的基础知识

目录
  • 类和对象基础知识
    • 1.类从不同角度可以有不同的类别划分
    • 2.类可以定义变量和方法
    • 3.类、对象的概念和关系
    • 4.从编程角度理解相关概念
  • 类属性和类方法以及对象属性、实例方法
    • 1.类的定义格式
    • 2.类中成员访问方式
  • 3.类的封装
  • 4.类的继承
  • 5.类的多态

类和对象基础知识 1.类从不同角度可以有不同的类别划分

例:人
按照肤色:白色人种,黑色人种,棕色人种,黄色人种
按照性别:男性,女性
按照国家:中国,美国,英国,德国,日本,韩国…

2.类可以定义变量和方法

例:以人为例:
身高,体重,肤色,ID,姓名,年龄,爱好,国籍,籍贯------人的属性-----------定义为变量
吃饭,睡觉,跑步,唱歌,跳舞,学习-------------人的动作或者行为-----------定义为方法

3.类、对象的概念和关系

类是抽象描述,对象是具体实例;一个类可以有若干具体对象,一个对象只能属于与一个类。

4.从编程角度理解相关概念

类中的成员:
类名:用关键字class进行定义,内部描述该类的属性及方法
类变量:定义在类中且方法体之外的变量,类变量值对所有对象而言,是公用的。
对象变量:通过self.变量名 定义的变量称为实例变量或实例属性或者对象属性。
方法:类中定义的类似函数的机制,包含类方法,静态方法,对象方法。
对象:类的实例化,可以通过对象访问类中成员

类属性和类方法以及对象属性、实例方法 1.类的定义格式
class 类名:
    类变量=***
    @classmethod
    def 类方法名(cls):   #类方法
          pass   #方法体             在类方法体内,访问类属性需要通过cls进行
     @staticmethod
       def 静态方法名()   #静态方法   没有特殊形参
            pass     #方法体
        
        def __init__(self):      #对象初始化方法或对象构造方法,在对象被创建时,自动调用
            self.对象变量=***   #方法体
         
        def 对象方法名(self):
            pass   #方法体
        
        def __del__(self):        #对象析构方法,对象被销毁时自动调用执行
            pass
2.类中成员访问方式

可以通过类名或者对象名来访问类中成员:
类名.类变量
类名.类方法()
类名.静态方法()
对象名.类变量
对象名.对象变量
对象名.类方法()
对象名.静态方法()
对象名.对象方法()
通过self修饰的属性或者变量,针对每个对象在内存中个存储一份,只能通过实例对象访问,不可以通过类名访问。
通过对象名调用类变量,一旦类变量和实例变量重名,实例变量会优先;

3.类的封装

封装:即类可以通过私有的属性及方法隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。
私有化方法,使用__开头,只能在类的内部调用,不能在类的外部调用。

class father:
    def __init__(self,Name):            # 类方法-初始化方法
        self.__saveMoney=1000            # 私有对象属性
    def __do_banzhuan(self):            # 私有对象方法
        return 100
    def __do_xiwan(self):
        return 200
    def __do_kuaidi(self):
        return 300
    def __do_baitan(self):
        return 400
    def getMoney(self):                    #公有方法
        sumMoney=self.__do_banzhuan() +self.__do_baitan()+self.__do_kuaidi()+self.__do_xiwan()+self.__saveMoney
        print(sumMoney)
if __name__ == '__main__':
    fObj = father('zhangsan')           # 实例化对象,通过变量保存对象
    fObj.getMoney()
4.类的继承

父类可以派生出子类,子类可以继承父类的一般方法和属性,私有属性和私有方法不可以被继承。
父类也称为基类,子类也称为派生类,一个父类可以有多个子类,一个子类也可以有多个父类;
子类继承多个父类时,按照从左到右的有限次序进行继承。

class father:
    def __init__(self,Name):            # 初始化方法
        self.name = Name                  # 对象变量,通过self进行修饰
    def sing(self):                     # 对象方法
        print(f"{self.name} can sing")
    def run(self):                        # 对象方法
        print(f"{self.name} can run")
class mother:
    def __init__(self,Name):             # 初始化方法
        self.name = Name                  # 对象变量,通过self进行修饰
    def dance(self):                     # 对象方法
        print(f"{self.name} can dance")
    def run(self):                        # 对象方法
        print(f"{self.name} can not run")
class son(father,mother):
    pass
if __name__ == '__main__':
    sonObj = son('小张')                # 实例化对象,通过变量保存对象
    sonObj.sing()
    sonObj.dance()
    sonObj.run()                       # 按照从左到右,优先继承father类run方法
5.类的多态

简言之,就是子类可以改写父类同名的方法,从而实现子类特有的功能行为。
子类可以覆盖父类的方法

class father:
    def sing(self):             # 父类方法
        print('------')
class son(father):
    def sing(self):             # 子类方法
        print('*****')
if __name__ == '__main__':
   sonObj = son()              #子类对象
   sonObj.sing()   

子类可以改写父类的初始化方法

class father:
    def __init__(self):
        self.Country = 'China'
        self.skin='yellow'
class son(father):
    def __init__(self):
        father.__init__(self)   #调用父类的初始化方法来对父类的实例属性进行访问及改写操作
        self.skin='orange'
if __name__ == '__main__':
    sonObj = son()
    print(sonObj.Country)
    print(sonObj.skin)

可以使用super对父类方法进行调用
格式:
super(子类名,子类对象名).父类方法()

super(son,sonObj).sing()   #调用父类的sing()方法
super(son,sonObj).dance()  #调用父类的dance()方法
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号