类是一个函数包
类中可以放置函数和变量,然后类中的函数可以很方便的使用类中的变量。
类中可以放置函数和变量
就像def语句自定义一个函数,class语句自定义一个类
# 语法:创建一个名为'ClassName'的类,类名一般首字母要大写
class ClassName():
# 规范:class语句后续的代码块要缩进
def function1():
# 定义类中的函数
既然说类是一个函数包,所以一个类中可以放置一堆函数
实例(后续的例子会使用中文取名方便理解)
class 类A():
def 函数1():
print('类A的第一个方法!')
def 函数2():
print('类A的第二个方法!')
def 函数3():
print('类A的第三个方法!')
类A.函数1()
类A.函数2()
输出结果
类A的第一个方法!
类A的第二个方法!
注:在类中被定义的函数被称为类的方法,使用类名.函数名()格式,让类的方法运行。
类中也可以放置一堆变量
实例
class 类A():
变量1 = 100
变量2 = -5.83
变量3 = 'abc'
print(类A.变量1)
print(类A.变量2)
print(类A.变量3)
输出结果
100
-5.83
abc
类中的属性(变量)可以使用类名.变量名的格式,增加或修改类的属性
实例
class 类A():
变量1 = 100
变量2 = -5.83
变量3 = 'abc'
print(类A.变量1)
print(类A.变量2)
print(类A.变量3)
类A.变量1 = 99
类A.变量4 = '新增一个变量'
print(类A.变量1)
print(类A.变量4)
输出结果
99
新增一个变量
既有方法又有属性的类
实例
class 智能机器人():
# 类属性
胸围 = 33
腰围 = 44
臀围 = 55
# 类方法
def 打招呼():
print('主人你好!')
def 卖萌():
print('主人,求抱抱!')
def 生气():
print('主人,我要报警啦!')
print(智能机器人.胸围)
print(智能机器人.腰围)
智能机器人.打招呼()
智能机器人.卖萌()
输出结果
33
44
主人你好!
主人,求抱抱!
类方法和类属性可以组合
类中的函数可以利用类中的变量(类方法可以调用类属性)
类中的变量传递给类中的函数,3个特定格式:
①第一个格式@classmethod的中文意思就是类方法,@classmethod声明了函数1是类方法,这样才能允许函数1使用类属性中的数据
②第二个格式cls的意思是class的缩写。如果类方法函数1想使用类属性,就要写上cls为函数1的第一个参数,也就是把这个类作为参数传给自己,这样就能被允许使用类中的数据。
③第三个格式是cls.变量。类方法想使用类属性的时候,需要再这些变量名称前加上cls.。
正确案例
class 类A():
变量1 = 100
变量2 = 200
def 函数1(): # 不需要使用类属性
print('不需要使用类属性。')
@classmethod
def 函数2(cls): # 需要使用类属性
print(cls.变量1)
print(cls.变量2)
类A.函数1()
类A.函数2()
输出结果
不需要使用类属性。
100
200
注:@classmethod、cls、cls.三处格式缺一不可
添加自报三围的类方法
给类方法传参
给函数传递参数被函数内部使用
实例
def add_100(num):
sum = num + 100
print('计算结果如下:')
print(sum)
num = 1
add_100(num)
输出结果
计算结果如下:
101
将函数改造成类中的方法
class 加100类():
def 加100函数(参数):
总和 = 参数 + 100
print('计算结果如下:')
print(总和)
参数 = 1
加100类.加100函数(参数)
输出结果
计算结果如下:
101
注:使用了外部的参数,不需要加上@classmethod格式
类方法仅使用内部参数
实例
class 智能机器人():
胸围 = 33
腰围 = 44
臀围 = 55
@classmethod
def 自报三围(cls):
print('胸围:{}'.format(str(cls.胸围)))
print('腰围:{}'.format(str(cls.腰围)))
print('臀围:{}'.format(str(cls.臀围)))
智能机器人.自报三围()
输出结果
胸围:33
腰围:44
臀围:55
类方法同时使用内部参数和外部参数
实例
class 加100类():
变量 = 100
@classmethod
def 加100函数(cls, 参数):
总和 = cls.变量 + 参数
print('加100函数计算结果:{}'.fromat(总和))
参数 = int(input('请输入一个整数:'))
加100类.加100函数(参数)
输出结果
请输入一个整数:1 # 1为终端人工输入
加100函数计算结果:101
注:当类方法使用多个外部参数时,要多预设几个参数位置加100函数(cls, 参数1, 参数2, 参数3)
作者:one
来源:公众号One丨Python