zoukankan      html  css  js  c++  java
  • 学习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()
    '''
    输出:
    对象已删除
    '''
  • 相关阅读:
    vue教程2-06 过滤器
    vue教程2-05 v-for循环 重复数据无法添加问题 加track-by='索引'
    vue教程2-04 vue实例简单方法
    Linux文件I/O
    Linux内存管理
    进程中内存地址空间的划分
    Ubuntu12.04 15.04禁止移动介质自动播放
    条件编译,头文件,静态库,共享库与多文件编程
    C语言的函数
    C语言流程控制
  • 原文地址:https://www.cnblogs.com/scheduled/p/13894393.html
Copyright © 2011-2022 走看看