完整教程:60-类和对象-内置方法
1.魔术方法
学习的__init__ 构造方法,是Python类内置的方法之一。
这些内置的类方法,各自有各自特殊的功能,
这些内置方法我们称之为: 魔术方法
比如 :__init__ 构造方法
__str__ 将对象转换为字符串
__lt__ 2个对象比较大小
__le__ 比较大小 等于比较
__eq__ 用于两个对象相等的比较
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 08_魔术方法4.py
@IDE : PyCharm
@Author : 刘庆东
@Date : 2025/9/8 15:12
eq
"""
class Teacher:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):#python内置的方法 再次输出对象的时候就不会打印内存地址了!
return f"老师类对象 name={self.name}, age={self.age}"
def __eq__(self, other):
#return self.name == other.name and self.age == other.age
return self.age == other.age
#创建对象
wangt = Teacher("王老师", 29)
dingt = Teacher("丁老师", 29)
print(wangt==dingt) #
其他的代码参见授课发送的py文件
2. 封装
现实世界中的:
属性 [特征]
行为操作
类中:
成员变量
成员方法
封装就是 将现实世界中事物的属性、行为封装到类中,描述为成员变量、成员方法,从而完成程序对现实世界事物的描述
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 09_封装演示.py
@IDE : PyCharm
@Author : 刘庆东
@Date : 2025/9/8 15:23
公有: 就餐区域
私有:例如厨房
"""
class Teacher:
name=None
age=None
__salary=19868.7 #私有的 成员变量
def __init__(self, name, age):
self.name = name
self.age = age
self.__salary=6688
def __siyoufangfa(self):
print("3333333#####")
def ceshi(self):
print(self.__salary)
if self.__salary>
=5000:
print("你需要缴纳个人所得税.....")
else:
print("不需要缴纳税款....")
teacher= Teacher("aaa",12)
teacher.ceshi()
teacher.__siyoufangfa()
"""
Traceback (most recent call last):
File "D:\01-python-learn\07类和对象\09_封装演示.py", line 35, in <module>
teacher.__siyoufangfa()
AttributeError: 'Teacher' object has no attribute '__siyoufangfa'
"""
# AttributeError: 'Teacher' object has no attribute '__salary'
#print(f"猜猜看能看到数据吗?{teacher.__salary}")
"""
私有的成员变量
_ _ 开头的
通过对象名点操作符 不可以被使用
私有变量出了类以后 无法赋值 也无法获取
私有方法 无法直接被类的对象使用!!!
"""
总结:
1. 封装的概念是指?
将现实世界事物在类中描述为属性和方法,即为封装。
2. 什么是私有成员?为什么需要私有成员?
现实事物有部分属性和行为是不公开对使用者开放的。同样在类中描述属性和方法的时候也需要达到这个要求,就需要定义私有成员了
3. 如何定义私有成员?
成员变量和成员方法的命名均以_ _作为开头即可
4. 私有成员的访问限制?
类对象无法访问私有成员
类中的其它成员可以访问私有成员
划重点:
通过学习私有成员的定义我们已经了解了,但是:它有什么实际的意义吗?
在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)