Python 类(class)1

Python 类(class)1

前言

类(class)是python中很重要的一个概念,也是我们面象对象编程中最重要的概念主之一
如何去理解类,就像如何去理解函数(方法)一样,首先要有一颗常态的心,不要因为新名词,新事物,而自乱阵脚.
然后,尽量用类比的方法去学习一个新事物,会让你更容易理解.

这里简单的说明一下本人对类的理解
从使用角度讲,类是一个有特点的功能集成者.
即当我们说到一个类的时候,

  1. 通常会去了解这个类能做什么事情.比如,我们Pygame中的矩形(Rect)就是一个类,它可以移动.
  2. 这个类有什么特点(属性)

从程序设计角度讲,类的组织是为了更好的重用代码,更好的组织代码,以及本质是一个数据类型.

本节提要

内容详情

类的声明:

class MyClass(object):
	pass

class: 是一个关键字,就像定义函数时用的def一样,说明我们要定义的是一个类
MyClass: 我们设计的类的类名.就像我们所有的地球人,统称"人"一样,对一个类型的统称
参数object:父类

类的构函数

class MyClass(object):
	def __init__(self, args):
		pass

init(self,args)
这个函数称为类的构造函数
用来对类进行一些初始化的操作

这个函数在类进行实例化的时候自动调用
实例:

class MyClass(object):
    def __init__(self, text):
        print(text)
mc = MyClass("我是在初始化的时候打印的")  # 类的实例化

在这里插入图片描述
可以看到,当我们实例话的时候,会自动调用__init__()函数
名词:
类中的函数,通常称为类的方法
注意:
构造函数中,函数名是固定的,第一个参数self也是固定的.
如果没有self这个参数,构造函数会出错
看以下实例

class MyClass2(object):
    def __init__(text):
        print(text)

mc = MyClass2("我是在初始化的时候打印的")

效果图
在这里插入图片描述
总结:
构造函数:

  1. 函数名:init()
  2. 第一个参数self固定的

类的方法

类的实例方法要点:

  1. 定义在类内部的函数
  2. 第一个参数必须是self
  3. 使用时,实例名.方法名()
# 类的方法示例
class MyClass3(object):
    # 构造函数
    def __init__(self, text):
        print("我是构造方法" + text)
    # 类的方法:move()
    def move(self):
        print("我移动了")

mc4 = MyClass3("mc4")
mc4.move()  # 调用类的move()方法

类的静态方法:
当我们希望一个类,不实例化也能调用类的某个方法时,这个方法应该被定义成静态方法

  • 方法定义前加下@staticmethod修饰
  • 方法的参数没有self
  • 调用时直接用类名.方法名()来使用
class MyClass5(object):
    # 构造函数
    def __init__(self, text):
        print("我是构造方法" + text)
    # 类的静态方法,可以实例化直接调用
    @staticmethod
    def dd():
        print("所有实例共有方法")
MyClass5.dd()  

类的属性

第一种:实例属性
要点:

  1. 定义在构造函数/类的方法内
  2. 在类的定义中用self.属性名来使用
  3. 实例化类后用实全例名.属性名来访问或者修改
    第二种: 类的属性
    要点:
  4. 定义在方法外
  5. 在类的定义中用类名.属性名来使用
  6. 类的属性被所有类的实例所共有(改变一次类属性,其他的实例的类属性也会变)
  7. 可以直接使用类名.属性名来使用
  8. 当类的属性被实例单独改变时,这个属性会与实例绑定,不再受类.属性名改变而改变
# 类的属性示例
class MyClass6(object):
    weight = 100 # 类属性
    def __init__(self, name, age):
        self.name = name  # 实例属性name
        self.age = age  # 实例属性age
    
print(MyClass6.weight)  # 打印类属性
mc6_1 = MyClass6("mc6_1", 12) # 实例化类
print(mc6_1.name, mc6_1.age)  # 访问实例化属性
# 改变类属性与实例化属性
MyClass6.weight = 200 # 我又重了
mc6_1.name = "mc6_1改名了"
mc6_1.age = 11 #我变年轻了
print(MyClass6.weight)
print(mc6_1.name, mc6_1.age)  # 访问实例化属性
mc6_2 = MyClass6("mc6_2", 20)
print(mc6_2.weight)
mc6_2.weight = 300 # 改变了实例的类属性
print(mc6_1.weight)
print(mc6_2.weight)
MyClass6.weight =  400  # 再改类属性
print(mc6_1.weight)
print(mc6_2.weight) # 该实例的此类属性不会再随着类名.属性名 的操作方法改变而改变了

在这里插入图片描述

后记

类的内容还有很多,这里简单的介绍了类的基本内容:

  • 类的定义方法
  • 类的构造函数
  • 类的方法
  • 类的属性

这几天在折腾电脑,给自己的电脑装了个黑苹果系统.由于无线网卡驱动问题,导致黑苹果系统还无法正式投入使用.明天网卡就能到了,到时候用黑苹果感受一下写代码的感觉是不是比win好点.

今天更新的内容有点少,但是内容的深度比较大,需要慢慢来体会

猜你喜欢

转载自blog.csdn.net/weixin_41810846/article/details/112849911