Python学习笔记-类与对象,魔术方法

类的定义与使用

类的适用语法:
class 类名称: class是关键字,表明定义类
- 类的属性 类的属性,即定义在类中的变量(成员变量
- 类的行为 类的行为,即定义在类中的函数(成员方法
创建类对象的语法:
对象 = 类名称()

"""
演示面向对象的成员方法定义和使用
"""
# 定义一个带有成员方法的类


class Student:
    name = None

    def say_hi(self):
        print(f"大家好,我是{self.name}!")

    def say_hi1(self, msg):
        print(f"大家好,我是{self.name},{msg}")


stu = Student()
stu.name = "leo"
# stu.say_hi()
stu.say_hi1("good")
stu1 = Student()
stu1.name = "cris"
stu1.say_hi()
===========================
>>> 大家好,我是leo,good
>>> 大家好,我是cris!

面向对象编程的小示例:在这里插入图片描述

class Clock:
    id = None
    price = None

    def ring(self):
        import winsound
        winsound.Beep(2000, 3000)


# 构建两个闹钟对象让其工作
clock1 = Clock()
clock1.id = '034023'
clock1.price = 49.9
print(f'闹钟ID:{clock1.id},价格是{clock1.price}')
clock1.ring()

clock2 = Clock()
clock2.id = '034028'
clock2.price = 40.9
print(f'闹钟ID:{clock2.id},价格是{clock2.price}')
clock2.ring()

总结

  1. 现实世界的事物由属性和行为组成,类也可以包含属性和行为,所以用类来描述现实世界事物是非常合适的。
  2. 类是程序中的“设计图纸”,而对象是基于图纸生产的具体实体。
  3. 面向对象的编程就是,使用对象进行编程,即,设计类,基于类创建对象,并使用对象来完成具体的工作。

属性(成员变量)的赋值

在这里插入图片描述

构造方法:
python类可以使用:init()方法,称之为构造方法,可以实现:
1.在创建类对象(构造类)的时候,会自动执行。
2.在创建类对象(构造类)的时候,将传入参数自动传递给__init__方法使用。

class Student:

    def __init__(self, name, age, tel):
        self.name = name
        self.age = age
        self.tel = tel
        print('finished!')

stu = Student('leo', 32, 2789001)
=============================================

>>> finished!

魔术方法

在这里插入图片描述

__str__方法,控制类转换为字符串的行为

class Student:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'Student类对象,name:{self.name}, age:{self.age}'

stu1 = Student('leo', 23)
stu2 = Student('cris', 24)
print(stu1)
print(str(stu2))
=================================================
>>> Student类对象,name:leo, age:23
>>> Student类对象,name:cris, age:24

lt()方法,可完成两个对象之间,小于或大于两种比较

class Student:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __lt__(self, other):
        return self.age < other.age


stu1 = Student('leo', 23)
stu2 = Student('cris', 24)
print(stu2 < stu1)
=======================================

>>> False

le()方法,可用于<=, >=两种比较运算符上

class Student:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __le__(self, other):
        return self.age <= other.age


stu1 = Student('leo', 23)
stu2 = Student('cris', 23)
print(stu2 <= stu1)
===================================================

>>> True

eq()方法,判断两对象的某一属性是否相等,注意,若未定义__eq__()方法时,比较两对象的属性,此时比较的是两对象的内存地址

class Student:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __eq__(self, other):
        return self.age == other.age

stu1 = Student('leo', 23)
stu2 = Student('cris', 23)
print(stu2 == stu1)
=============================================
> True

总结
在这里插入图片描述

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值