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

猜你喜欢

转载自www.cnblogs.com/spp666/p/12098412.html