Python(三)类与对象


类是一个函数包

类中可以放置函数和变量,然后类中的函数可以很方便的使用类中的变量。

类中可以放置函数和变量

def语句定义一个函数,class语句定义一个类。

在类中被定义的函数被称为类的【方法】,描述的是这个类能做什么。使用类名.函数名()的格式,就可以让类的方法运行起来。

在类中被定义的变量被称为类的【属性】。使用类名.变量名的格式,可以把类中的属性的值提取出来。

使用类名.变量名的格式,可以让我们在类的外面,增加或修改类的属性。

为了让代码更直观,一般会把类中的函数和函数之间换行隔开。

@classmethod是声明了下面的函数是类方法。

 

 

 类方法和类属性可以组合

为了把类中的变量传递给类中的函数,我们需要用到3个特定格式:

① 第一个格式@classmethod的中文意思就是“类方法”,@classmethod声明了函数1是类方法,这样才能允许函数1使用类属性中的数据。

② 第二个格式cls的意思是class的缩写。如果类方法函数1想使用类属性(也就是类中的变量),就要写上cls为函数1的第一个参数,也就是把这个类作为参数传给自己,这样就能被允许使用类中的数据。

③ 第三个格式是cls.变量。类方法想使用类属性的时候,需要在这些变量名称前加上cls.。

注意:当类中的函数【不需要】用到类中的变量时,就不要用@classmethod、cls、cls.三处格式,否则终端会报错。

给类方法传参

 类方法仅使用外部参数

 只使用外部的参数,没有使用类属性,格式上不需要@lassmethod和cls。

类方法仅使用内部参数 

就是要用上面说的类方法可以与类属性组合的三个格式

类方法同时使用内部参数和外部参数

# 请直接运行并体验代码效果
class 加100类():
    变量 = 100
    
    @classmethod
    def 加100函数(cls,参数):
        总和 = cls.变量 + 参数
        print('加100函数计算结果如下:')
        print(总和)

参数 = int(input('请输入一个整数:'))
加100类.加100函数(参数)

效果图

注意:我们要多预设几个参数位置,以备类方法突然要使用多个外部参数。

 增加/修改类属性

有两种途径来增加或修改类属性。一种是从内部,用类方法去增加/修改;另一种是从外部,用类.变量 = xx直接增加/修改类属性。

外部增加/修改类属性

class 类A():
    pass

类A.变量1 = 100
print(类A.变量1)

内部增加/修改类属性

lass 类():
    @classmethod
    def 增加类属性(cls):
        cls.变量 = input('请随意输入字符串:')

类.增加类属性()

print('打印新增的类属性:')
print(类.变量)

类与对象

以【类】为模板做出来的这些产品就是【类】的【实例化对象】,这个过程叫做【实例化】

类的实例化

实例化前的格式

 实例化后的格式

 

 

 实例属性和类属性

增加/修改类属性实例属性也会发生变化,但是增加/修改实例属性,类属性不会发生变化, 且影响的实例属性只有那一个。

注意:当修改了实例属性之后,修改对应的类属性也不会影响该实例属性了。

实例方法和类方法

重写类方法

步骤一:在类的外部写一个函数。

步骤二:把这个新函数的名字赋值给类.原始函数

 

 

 注意:不可以重写实例方法。

初始化函数

class 类():
    def __init__(self):
        print('实例化成功!')
        
实例 = 类()

效果图

初始化函数的意思是,当你创建一个实例的时候,这个函数就会被调用。上面的代码在执行实例 = 类()的语句时,就自动调用了__init__(self)函数。

__init__()的括号中,第一个参数一定要写上self,不然会报错。

初始化函数也可以传递参数。

类的继承

数据流转图

 

 

 注意:子类的方法可以替换父类的方法(也就是重新定义)

多重继承:一个子类从【多个父类】中继承类方法。格式是class 子类(父类1,父类2,……)。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM