zoukankan      html  css  js  c++  java
  • python面向对象方法

    # 需求:洗衣机,功能:能洗衣服
    # 1、定义洗衣机类
    """
    class 类名():
        代码
    """
    class Washer():
        def wash(self):
            print("能洗衣服")
    
    # 2 创建对象
    # 对象名 = 类名()
    haier = Washer()
    
    # 3、验证成果
    # 打印haier对象
    print(haier)
    
    # 使用wash功能--实例方法/对象方法 --对象名.wash()
    haier.wash()
    
    # 类:洗衣机,功能:能洗衣服
    class Washer():
        def wash(self):
            print("洗衣服")
            print(self)
    
    haier1 = Washer()
    print(haier1)   #<__main__.Washer object at 0x00000223270D9710>
    
    # haier.wash() #洗衣服   <__main__.Washer object at 0x00000223270D9710>
    # 由于打印对象和打印self得到的内存地址是一样的,所以self指的是调用该函数的对象
    
    haier2 = Washer()
    print(haier2)
    # 一个类可以创建多个对象;多个对象都调用函数的时候,self地址是不相同的
    
    
    
    添加和获取对象属性
    属性即是特征,比如:洗衣机的宽度、高度、重量
    对象的属性既可以在类外面添加和获取,也能在类里面添加和获取
    
    1 类外面添加对象属性
    # 语法  对象名.属性名 = 值  dg:haier.width = 500
    class Washer():
        def wash(self):
            print("洗衣服")
    haier1 = Washer()
    # 添加对象属性
    haier1.width = 400
    haier1.height = 500
    
    # 类外面获取对象属性   
    # 获取属性  对象名.属性名
    print("洗衣机的宽度是:%s"%haier1.width)  #洗衣机的宽度是:400
    print("洗衣机的高度是:%s"%haier1.height)  #洗衣机的高度是:500
    
    print("--------------------------------")
    # 类里面获取对象属性
    # 语法: self.属性名
    
    class myWasher():
        def wash(self):
            print("洗衣服")
        # 获取对象属性
        def print_info(self):
            # self.属性名
            # print(self.width)
            print("洗衣机的宽度是:%s"%self.width)
            print("洗衣机的高度是:%s"%self.height)
    
    my_haier = myWasher()
    
    # 添加属性
    my_haier.width = 400
    my_haier.height = 500
    
    # 对象调用方法
    my_haier.print_info()
    
    
    
    # 魔方方法
    # 在python中,__xx__的函数叫做魔法方法,指的是具有特殊功能的函数
    
    # 体验__init__
    # __init__()的方法作用:初始化对象
    # __init__()方法,在创建一个对象时默认被调用,不需要手动调用
    # __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去
    
    # 目标:定义init魔法方法设置初始化属性,并访问调用
    """
    1 定义类:
        init魔法方法:width 和 height
        添加实例方法:访问实例属性
    2 创建对象
    3 验证结果
        调用实例方法
    """
    class Washer():
        def __init__(self):
            # 添加实例属性
            self.width = 500
            self.height = 800
        def print_info(self):
            print("洗衣机的宽度是:%s"%self.width)
            print("洗衣机的高度是:%s"%self.height)
    
    haier = Washer()
    haier.print_info()  #洗衣机的宽度是:500   洗衣机的高度是:800
    
    # 带参数的__init__()
    # 思考:一个类可以创建多个对象,如何对不同的对象设置不同的初始化属性呢?   答:传参数
    class Washer():
        def __init__(self,width,height):
            # 添加实例属性
            self.width = width
            self.height = height
        def print_info(self):
            print("洗衣机的宽度是:%s"%self.width)
            print("洗衣机的高度是:%s"%self.height)
    
    haier = Washer(100,200)
    haier.print_info()  #洗衣机的宽度是:100  洗衣机的高度是:200
    
    
    __str__()
    当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__方法,那么就会打印从这个方法中return的数据
    
    class Washer():
    
        def __init__(self):
            self.width = 300
    
        def __str__(self):
            return '解释说明:类的说明或对象状态的说明'
    haier = Washer()
    print(haier)   # 解释说明:类的说明或对象状态的说明
    
    
    # __del__()
    # 当删除对象时,python解释器也会默认调用__del__()方法
    
    class Washer():
    
        def __init__(self):
            self.width = 300
    
        def __del__(self):
            print("对象已经删除")
    haier = Washer()    #对象已经删除
    
    # del haier
  • 相关阅读:
    51nod1363-最小公倍数之和
    [模板] 数论题的一些经验
    WC2019游记 && 课件
    (伪)WC2019题解
    [模板] 后缀自动机&&后缀树
    [模板] 二分图博弈 && BZOJ2463:[中山市选2009]谁能赢呢?
    界面修改日志
    [模板] dp套dp && bzoj5336: [TJOI2018]party
    BZOJ1025:[SCOI2009]游戏
    [模板] BSGS/扩展BSGS
  • 原文地址:https://www.cnblogs.com/spp666/p/12098412.html
Copyright © 2011-2022 走看看