• 学习python的day12之面向对象基础


    面向对象基础

    一、类和对象

    类和对象的关系:用类去创建(实例化)一个对象

    在开发中,先有类再有对象

    1.类是对一系列具有相同特征和行为的事务的统称,是一个抽象的概念,不是存在的事物。

    特征即是属性

    行为即是方法

    1.1定义类

    python2中类分为:经典类和新式类

    语法:

      class  类名():

        代码

        ......  

    注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯。

    2.创建对象

    对象又名实例。

    语法:

      对象名 = 类名()

    #1.体验类和对象
    
    #创建类
    class Washer():
        def wash(self):
            print('洗衣服')
    
    #创建对象
    haier = Washer()
    
    #验证成果
    print(haier)
    
    #使用wash功能--实例方法/对象--对象名.函数名()
    haier.wash()

    '''
    输出:

    <__main__.Washer object at 0x000001FCBBCE8400>
    洗衣服


    '''

    输出对象,输出的是内存地址

    3.类里面的self

    self指的是调用该函数的对象。

    class Washer():
        def wash(self):
            print('洗衣服')
            print(self)
    
    haier = Washer()
    
    print(haier)
    haier.wash()
    '''
    <__main__.Washer object at 0x000002C856CD8400>
    洗衣服
    <__main__.Washer object at 0x000002C856CD8400>
    '''

    由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象 

    4.一个类可以创建多个对象

    class Washer():
        def wash(self):
            print('洗衣服')
            print(self)
    haier1 = Washer()
    haier2 = Washer()
    
    print(haier1)
    haier1.wash()
    print()
    print(haier2)
    haier2.wash()
    '''
    输出:
    <__main__.Washer object at 0x000002597DB28400>
    洗衣服
    <__main__.Washer object at 0x000002597DB28400>
    
    <__main__.Washer object at 0x000002597DB38580>
    洗衣服
    <__main__.Washer object at 0x000002597DB38580>
    '''

    结论:

    一个类可以创建多个对象

    多个对象都调用函数时,self的内存地址不相同

    5.添加和获取对象属性

    属性即是特征,比如:洗衣机的长宽高,颜色,重量...

    对象属性既可以在类外面添加和获取,也可以在类里面添加和获取

    5.1在类外面添加和获取对象属性

    添加语法:  对象名.属性名=值

    获取语法:对象名.属性名

    class Washer():
        def wash(self):
            print('洗衣服')
            print(self)
    haier1 = Washer()
    haier1.width = 300
    haier1.height = 500
    
    print(haier1.width)
    print(haier1.height)
    '''
    输出:
    300
    500
    '''

    5.2在类里面获取对象属性

    class Washer():
        def wash(self):
            print('洗衣服')
            print(self.width)
            print(self.height)
    haier1 = Washer()
    haier1.width = 300
    haier1.height = 500
    haier1.wash()
    '''
    输出:
    洗衣服
    300
    500
    '''

    二、魔法方法

    在python中,__xx__()的函数叫做魔法方法,指的是具有特殊功能的函数。

    1. __init__()

    __init__()方法的作用:初始化对象。

    class Washer():
        def __init__(self):
            self.width = 300
            self.height = 500
        def print_info(self):
            #在类里面调用实例方法
            print(self.width,self.height)
    haier1 = Washer()
    
    haier1.print_info()
    '''
    输出:
    300 500
    '''

    注意::

    __init__()方法 ,在创建一个对象时默认被调用,不需要手动调用

    __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。

    1.1带参数的__init__()

    class Washer():
        def __init__(self,width,height):
            self.width = width
            self.height = height
        def print_info(self):
            #在类里面调用实例方法
            print(self.width,self.height)
    haier1 = Washer(300,500)
    
    haier1.print_info()
    '''
    输出:
    300 500
    '''

    2.__str__()

    当使用print输出对象时,默认打印对象的内存地址。如果定义了__str__()方法,那么就会打印从这个方法中return的数据

    class Washer():
        def __init__(self,width,height):
            self.width = width
            self.height = height
        def __str__(self):
            return '说明书'
        def print_info(self):
            #在类里面调用实例方法
            print(self.width,self.height)
    haier1 = Washer(300,500)
    
    haier1.print_info()
    print(haier1)
    '''
    输出:
    300 500
    说明书
    '''

    3.__del__()

    当删除对象时,python解释器也会默认调用__del__()

    class Washer():
        def wash(self):
            self.width = 300
        def __del__(self):
            print('对象已删除')
    haier = Washer()
    '''
    输出:
    对象已删除
    '''
  • 相关阅读:
    WinAPI: ExtTextOut 扩展的文本输出
    WinAPI: SetTextCharacterExtra 设置字符间距
    WinAPI: DrawTextEx 多功能文本绘制
    WinAPI: sndPlaySound 播放 wav 文件
    WinAPI: SetTextColor 设置设备环境的文本颜色
    WinAPI: DrawText 将文本绘制到指定的矩形中
    WinAPI: GetTextColor 获取设备环境的文本颜色
    WinAPI: GetTextAlign 获取绘图环境的文本对齐方式
    ulimit限制之nproc问题
    基于EPOLL写的HTTP服务器(加入了线程池)
  • 原文地址:https://www.cnblogs.com/scheduled/p/13894393.html
Copyright © 2020-2023  润新知