Python中的类和对象

参考黑马程序员Python教程,学习笔记。

第一节:初识对象

1.生活中或是程序中,我们都可以使用设计表格、生成表格、填写表格的形式组织数据。

2.进行对比,在程序中:

设计表格,称之为:设计类(class)

打印表格,称之为:创建对象

填写表格,称之为:对象属性赋值

实例代码:

# 1.设计一个类(类比设计表格)
class Student:
    name = None         #记录姓名
    gender = None       #性别
    nationality = None  #国籍
    native_place = None #籍贯
    age = None          #年龄
# 2.创建一个对象(打印表格)
stu_1 = Student()
# 3.对象属性进行赋值(填写表格)
stu_1.name = "郭绍锐"
stu_1.gender = "女"
stu_1.nationality = "China"
stu_1.native_place = "河南省"
stu_1.age = "23"
# 4.获取对象中记录的信息
print(stu_1.name)
print(stu_1.gender)
print(stu_1.nationality)
print(stu_1.native_place)
print(stu_1.age)

第二节:成员方法

1.类是由哪两部分组成呢?

(1)类的属性,称之为:成员变量

(2)类的行为,称之为:成员方法

注意:函数是写在类外的,定义在类内部,我们称之为方法。

2.类和成员方法的定义语法

class 类名称:
    成员变量

    def 成员方法(self,参数列表)
        成员方法体

对象 = 类名称()

3.self的作用

(1)表示类对象本身的意思

(2)只有通过self,成员方法才能访问类的成员变量

(3)self出现在形参列表中,但是不占用参数位置,无需理会

示例代码:

# 定义一个带有成员方法的类
class Student:
    name = None  #成员属性(变量)

    def say_hi(self):   #成员方法
        print(f"大家好呀,我是{self.name},欢迎大家多多关照")

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

stu = Student()
stu.name = "周杰轮"
stu.say_hi()

stu2 = Student()
stu2.name = "林军杰"
stu2.say_hi2("小伙子,我看好你")

第三节:类和对象

1.现实世界的事物由什么组成?

属性和行为

类也可以包含属性和行为,所以使用类描述现实世界事物是非常合适的

2.类和对象的关系是什么?

类是程序中的“设计图纸”,对象是基于图纸生产的具体实体

3.什么是面向对象编程?

面向对象编程就是,使用对象进行编程

即设计类,基于类创建对象,并使用对象来完成具体的工作

示例代码:

# 类和对象

# 1. 掌握使用类表述现实世界事物的思想
# 2. 掌握类和对象的关系
# 3. 理解什么是面向对象
# 演示类和对象的关系,即面向对象的编程套路(思想)

# 设计一个闹钟类
class clock:
    id = None
    price = None

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

# 构建2个闹钟对象并让其工作
clock1 = clock()
clock1.id = "003032"
clock1.price = 13.14
print(f"闹钟ID:{clock1.id},价格:{clock1.price}")
clock1.ring()

clock2 = clock()
clock2.id = "321341"
clock2.price = 52.0
print(f"闹钟ID:{clock2.id},价格:{clock2.price}")
clock2.ring()

第四节:构造方法

1.构造方法的名称是:

__init__,注意init前后的两个下划线符号

2.构造方法的作用:

(1)构建类对象的时候会自动运行

(2)构建类对象的传参会传递给构造方法,借此特性可以给成员变量赋值

3.注意事项:

(1)构造方法不要忘记self关键字

(2)在方法内使用成员变量需要使用self

# 构造方法  使用构造方法向成员变量赋值

# 构造方法的名称:  __init__

class Student:
    # 这三段代码可以省略
    name = None
    age = None
    tel = None

    def __init__(self,name,age,tel):
        self.name = name
        self.age = age
        self.tel = tel
        print("Student类创建了一个类对象")

stu = Student("周杰轮",31,"13143114")
print(stu.name)
print(stu.age)
print(stu.tel)

第五节 其它内置方法

总结:

# 其他内置方法

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

    # __str__魔术方法
    def __str__(self):
        return  f"Student类对象,name:{self.name},age:{self.age}"

    # __lt__魔术方法  用于小于和大于
    def __lt__(self, other):
        return self.age < other.age

    # __le__魔术方法  用于大于等于和小于等于
    def __le__(self, other):
        return self.age <= other.age

    # __eq__魔术方法 用于相等判断
    def __eq__(self, other):
        return self.age == other.age

stu = Student("周杰轮",31)
print(stu)
print(str(stu))

stu1 = Student("周杰轮",31)
stu2 = Student("郭绍锐",23)
print(stu1<stu2)

第六节 封装

1.封装的概念:将现实世界事物在类中描述为属性和方法。

2.什么是私有成员?为什么需要私有成员?

现实事物有部分属性和行为是不公开对使用者开放的 。同样在类中描述属性和方法的时候也需要达到这个要求,就需要定义私有成员了。

3.如何定义私有成员?

成员变量和成员方法的命名均以_作为开头。

4.私有成员的访问限制?

类对象无法访问私有成员,类中的其它成员可以访问私有成员。

# 封装

# 定义一个类,内含私有成员变量和私有成员方法   私有成员变量和方法前有倆 __
class Phone:

    __current_voltage = 0.5   # 当前手机运行电压

    def __keep_single_core(self):
        print("让CPU以单核模式运行")

    def call_by_5G(self):    #类中其他成员方法可以使用私有成员变量和私有成员方法
        if self.__current_voltage >= 1:
            print("5g通话已开启")
        else:
            self.__keep_single_core()
            print("电量不足,无法使用5g通话,并已经设置为单核运行进行省电")

phone = Phone()
phone.call_by_5G()
# phone.__keep_single_core()  私有成员方法不可以直接使用
# print(phone.__current_voltage) 私有成员变量不可以直接使用

第六节 封装练习

class Phone:
    # 提供私有成员变量
    __is_5g_enable = False

    # 提供私有成员方法
    def __check_5g(self):
        if self.__is_5g_enable == True:
            print("5g开启")
        else:
            print("5g关闭,使用4g网络")

    # 提供公开成员方法
    def call_by_5g(self):
        self.__check_5g()
        print("正在通话中")

phone = Phone()
phone.call_by_5g()

第七节 继承

1.继承的概念:继承就是一个类,继承另外一个类的成员变量和成员方法。

语法:

class 类名(父类1,父类2,父类3):
    类内容体

子类构建的类对象,可以

(1).有自己的成员变量和成员方法

(2).使用父类的成员变量和成员方法

2.单继承和多继承

单继承:一个类继承另一个类

多继承:一个类继承多个类,按照顺序从左向右依次继承

多继承中,如果父类有同名方法或属性,先继承的优先级高于后继承

3.pass关键字的作用是什么

pass的占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思。

# 继承
# 单继承
class Phone:
    IMEI = None  # 序列号
    producer = "HM"  # 厂商
    def call_by_4g(self):
        print("4g通话")
class Phone2022(Phone):
    face_id = "10001"   # 面部识别ID
    def call_by_5g(self):
        print("2022年新功能:5g通话")

phone = Phone2022()
print(phone.producer)
phone.call_by_4g()
phone.call_by_5g()

# 多继承
# class 类名(父类1,父类2,父类3):
#     pass
#     不需要加任何要求的话加个pass!!!!!

# 复写和使用父类成员

class Phone:
    IMEI = None  # 序列号
    producer = "ITCAST"  # 厂商

    def call_by_5g(self):
        print("5g通话")

# 定义子类,复写父类成员 复写会直接替换掉
# class MyPhone(Phone):  # 功能升级
#     producer = "ITHEIMA"
#     def call_by_5g(self):
#         print("开启高级5g通话")
#
# phone = MyPhone()
# phone.call_by_5g()
# print(phone.producer)

# 在子类中,调用父类成员
class MyPhone(Phone):  # 功能升级
    producer = "ITHEIMA"
    def call_by_5g(self):
        print("开启高级5g通话")
        # 方式1
        print(f"父类的厂商是:{Phone.producer}")
        Phone.call_by_5g(self)
        # 方式2
        print(f"父类的厂商是:{super().producer}")
        super().call_by_5g()
phone = MyPhone()
phone.call_by_5g()
print(phone.producer)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值