参考:https://www.runoob.com/python3/python3-class.html
类的属性
包含:私有属性和公开属性,也可称为私有变量公共开变量
私有属性
格式:__private_attr = attr_value
解释:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用,也就是只能在类定义时访问。内部调用使用self.__private_attr。
普通的类中的属性和其他定义变量无区别
格式:变量名 = 变量值
# coding:utf-8
class A:
__priv = 20
com = 30
a = A()
print(a.com)
print(a.__priv) #实体对象使用私有属性报错
'''
30
AttributeError: 'A' object has no attribute '__priv'
'''
类的方法
私有方法和公共方法,定义和属性的定义相同,使用权限也一样。
# coding:utf-8
class A:
__priv = 20
com = 30
def __init__(self): #由于__priv是类中的属性,在内置函数中不需要写入形参
print("this is init:%d"%self.__priv)
def com_func(self): #公共方法
print("this is com:%d"%self.__priv)
def __pri_func(): #私有方法
print('this is private func!')
a = A()
print(a.com)
a.com_func()
a.__pri_func() #私有方法在实体对象使用出现错误
'''
this is init:20
30
this is com:20
AttributeError: 'A' object has no attribute '__pri_func'
'''
类的专有方法
init : 构造函数,在生成对象时调用
del : 析构函数,释放对象时使用
repr : 打印,转换
setitem : 按照索引赋值
getitem: 按照索引获取值
len: 获得长度
cmp: 比较运算
call: 函数调用
add: 加运算
sub: 减运算
mul: 乘运算
truediv: 除运算
mod: 求余运算
pow: 乘方
运算方法的重写
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
#___str__()方法也是特殊方法,在有自己定义的情况下,print的打印会使用这个自己定义的返回值
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other): #对加法运算重写
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
#加法运算重写后的使用,功能同print (v1.__add__(v2))
print (v1 + v2) #使用上面定义的__str__()方法
#Vector (7, 8)
类中普通方法的参数
若想将类中的普通方法的参数还能再其他方法中使用,必须将包含该参数的方法在__init__方法中使用
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
self.mid() #只有类方法在这里使用后才能在后面使用该该中的参数
def mid(self):
self.luqi={}
def fiin(self):
#在这使用了mid中的luqi参数,因为在__init__中加入了mid
self.luqi['first']=self.a+self.b
print(self.luqi['first'])
v1 = Vector(2,10)
v1.fiin()
#12
来源:CSDN
作者:MAR-Sky
链接:https://blog.csdn.net/weixin_43794311/article/details/104405387