Python(三十)python中的类class

简介: Python是一门面向对象语言。Class类是面向对象中非常重要的一个元素什么是类呢?Class类是一个功能的合集。一:类的创建1 :类的构造函数python复制代码# 定义类class tests: '测试创建类' # 类文档字符串 projectName='' def __init__(self,name): print("初始化类调用了构造函数") self.projectName = name print("构造函数接收到了参数:",self.projectName)T = tests('时间里

Python是一门面向对象语言。

Class类是面向对象中非常重要的一个元素

什么是类呢?

Class类是一个功能的合集。

一:类的创建

1:类的构造函数

python

复制代码

# 定义类
class tests:
    '测试创建类' # 类文档字符串
    projectName=''
    def __init__(self,name):
        print("初始化类调用了构造函数")
        self.projectName = name
        print("构造函数接收到了参数:",self.projectName)
T = tests('时间里的')

输出:

复制代码

初始化类调用了构造函数
构造函数接收到了参数: 时间里的

 

第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法

self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

构造函数这个东西好像每个语言(目前我遇到的)基本上都差不多。

上边的类型我定义了一个类的成员变量projectName,这个是公共(public)权限的,关于这部分,后边的类的继承中会讲到。

 2:self参数

类的方法都有一个固定的参数self(不一定非的是self,换成其他名字也可以)

类的方法和函数的区别就是这个,函数可以没有参数,类的方法必须有一个格外的参数

self 代表类的实例,而非类

python

复制代码

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
t = Test()
t.prt()

输出:

kotlin

复制代码

<classObj.Test object at 0x0000027065349348>
<class 'classObj.Test'>

从上边的代码我们可以看出:

Self指向类的对象

Self.__class__指向类

 3:一个完整的类(构造函数,方法,属性)

python

复制代码

# 定义类
class Student:
    """
    测试创建类
    """
    # name
    name = ''
    # age
    age = ''
    # 构造函数
    def __init__(self, name, age):
        print("初始化类调用了构造函数")
        self.name = name
        self.age = age
        print("构造函数接收到了参数:", self.name)
    # 获取 学生信息
    def getStudentInfo(self):
        li = {'name': self.name, 'age': self.age}
        return li
T = Student('时间里的', 18)
li = T.getStudentInfo()
print('学生姓名:', li['name'])
print('学生年龄:', li['age'])

类的getStudentinfo方法返回的是一个字典

我们可以通过key来访问字典中的值

 

二:类的内置属性

dict : 类的属性(包含一个字典,由类的数据属性组成)

doc :类的文档字符串

name: 类名

module: 类定义所在的模块(类的全名是'main.className',如果类位于一个导入模块mymod中,那么className.module 等于 mymod)

bases : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

python

复制代码

class Employee:
    """
    员工类
    """
    name = ''
    duty = ''
    count = 0
    def __init__(self, name, duty):
        self.name = name
        self.duty = duty
    def displayCount(self):
        self.count += 1
        print("类对象的属性: %d" % self.count)
        print("类的属性: %d" % Employee.count)
    def displayEmployee(self):
        print("Name : ", self.name, ", Salary: ", self.duty)
E = Employee('camellia', '收银')
# 获取类文档
print("class的__doc__函数:", Employee.__doc__)
# 获取类名称
print("class的__name__函数:", Employee.__name__)
# 获取类文件
print("class的__module__函数:", Employee.__module__)
# 类的所有父类构成元素
print("class的__bases__函数:", Employee.__bases__)
# 类的属性
print("class的__dict__函数:", Employee.__dict__)
# 调用方法
E.displayCount()

输出:

kotlin

复制代码

class的__doc__函数:
    员工类
class的__name__函数: Employee
class的__module__函数: classObj
class的__bases__函数: (<class 'object'>,)
class的__dict__函数: {'__module__': 'classObj', '__doc__': '\n    员工类\n    ', 'name': '', 'duty': '', 'count': 0, '__init__': <function Employee.__init__ at 0x000002129D945318>, 'displayCount': <function Employee.displayCount at 0x000002129D945678>, 'displayEmployee': <function Employee.displayEmployee at 0x000002129D945828>, '__dict__': <attribute '__dict__' of 'Employee' objects>, '__weakref__': <attribute '__weakref__' of 'Employee' objects>}
类对象的属性: 1
类的属性: 0

三:类对象的销毁

当我们实例化一个类,在这个类不被使用的时候,我们需要使用析构函数__del__来销毁他。

python

复制代码

class Employee:
    """
    员工类
    """
    name = ''
    duty = ''
    count = 0
    def __init__(self, name, duty):
        self.name = name
        self.duty = duty
    def displayCount(self):
        self.count += 1
        print("类对象的属性: %d" % self.count)
        print("类的属性: %d" % Employee.count)
    def displayEmployee(self):
        print("Name : ", self.name, ", Salary: ", self.duty)
    def __del__(self):
        print('进入析构函数')
E1 = Employee('camellia', '程序员')
# 打印变量id
print(id(E1))
# 销毁对象
del E1
# 再次打印对象id(因为对象在上一步中已销毁,因此,这里程序会报错)
try:
    print(id(E1))
except:
    print("变量已销毁!")

输出:

复制代码

2149086649160
进入析构函数
变量已销毁!

 

具体相关的解释在代码中有注释,将上边的代码复制到你的pycharm中尝试一下就好。

四:类的静态方法以及类方法

Python的类中为我们提供了两个特殊的方法,类方法:classmethod 、 静态方法:staticmethod

这两种方法都不需要实例化类就可以被类本身调用

 1:静态方法staticmethod

语法:

staticmethod(function)

示例:

python

复制代码

class Test:
    name = "时间里的"
    def __int__(self):
        pass
    @staticmethod
    def staticss():
        print("调用类的静态方法")
        print("调用类的属性:", Test.name)
# 类的调用
Test.staticss()
# 类的对象调用
T = Test()
T.staticss()

输出:

复制代码

调用类的静态方法
调用类的属性: 时间里的
调用类的静态方法
调用类的属性: 时间里的

 

静态方法staticmethod可以通过类调用,也可以通过类的对象调用,都可以。

 2:类方法classmethod

类方法必须有一个参数 cls 这个是固定的

python

复制代码

class Test:
    name = "时间里的"
    def __int__(self):
        pass
    @classmethod
    def classMe(cls):
        print("调用类的类方法")
        print("调用类的属性:", cls.name)
# 类的调用
Test.classMe()
# 类的对象调用
T = Test()
T.classMe()

输出:

复制代码

调用类的类方法
调用类的属性: 时间里的
调用类的类方法
调用类的属性: 时间里的

以上大概就是python类的基础使用

有好的建议,请在下方输入你的评论。

目录
打赏
0
0
0
0
16
分享
相关文章
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
28 1
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
187 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
2月前
|
The Instance Class Static Magic Method in Python
So what is the difference between the Instance method, the Class method and the Static method?
33 8
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
6月前
|
Python基础---类
【10月更文挑战第10天】Python类的定义
80 2
|
6月前
|
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
55 1
WK
|
6月前
|
Python类命名
在Python编程中,类命名至关重要,影响代码的可读性和维护性。建议使用大写驼峰命名法(如Employee),确保名称简洁且具描述性,避免使用内置类型名及单字母或数字开头,遵循PEP 8风格指南,保持项目内命名风格一致。
WK
55 0
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
115 0
|
6月前
|
Python中的类(一)
Python中的类(一)
37 0
|
6月前
|
Python中的类(一)
Python中的类(一)
37 0

热门文章

最新文章