Python类 解释
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16840336.html
类:
1.代码:
#!/usr/bin/python3
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i) # 输出结果:3.0 -4.5
2.self 解释:
self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别:
它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。
self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的。
在类的内部,使用 def 关键字来定义一个方法,
与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。
3.python私有方法和私有属性
https://blog.csdn.net/liuskyter/article/details/80387726
Python默认的成员函数和成员变量都是公开的,Python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。
在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了
私有属性
如果有一个对象,当需要对其进行修改属性时,有2种方法
对象名.属性名 = 数据 ---->直接修改
对象名.方法名() ---->间接修改
为了更好的保存属性安全,即不能随意修改,一般的处理方式为
1.将属性定义为私有属性
2.添加一个可以调用的方法,供调用
python 代码:
class Person(object):
def __init__(self, name):
self.__name = name
def get_name(self):
return self.__name
def set_name(self, new_name):
if len(new_name) >= 5:
self.__name = new_name
else:
print("error:名字长度需要大于或者等于5")
p = Person("skyter")
p.set_name("wanger")
print(p.get_name())
p.set_name("lisi")
print(p.get_name())
4.继承
Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义
# 单继承示例(student 继承 people)
class people:
class student(people):
# 多继承:
Python同样有限的支持多继承形式
# 多重继承
class sample(speaker,student):
5.类的专有方法:
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
6.运算符重载
Python同样支持运算符重载,我们可以对类的专有方法进行重载
对运算符赋予不同的含义
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
2021-10-30 Java泛型