python基础之定义类和对象详解
作者:Python-派大星 发布时间:2023-06-15 05:35:12
标签:python,定义类,对象
定义简单的类
面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了!
定义只包含方法的类
在python中,要定义一个只包含方法的类,语法格式如下:
#用class定义类名
class 类名:
def 方法1(self,参数列表) #方法的属性中有且仅有一个self
pass
def 方法2(self,参数列表) #类之外定义的def是函数,在类里面定义的def叫做方法,而且括号里必须要有self
pass
class Student:
pass
方法的定义格式和之前学习过的函数几乎一样区别在于第一个参数必须是self
创建对象
当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:
对象变量名=类名()
第一个面向对象程序
需求: 小猫爱吃鱼,小猫要喝水
分析:
1.定义一个猫类(Cat)
2.定义两个方法ect和drink
3.按照需求--不需要定义属性
class Cat: #Cat为类的名称(类名),又一个或多个单词组成,每个单词首字母大写,其余字母小写
"""这是一个猫类"""
def ect(self): #定义方法
print("小猫爱吃鱼")
def drink(self):
print("小猫要喝水")
tom=Cat() #创建类的对象
# big_tom=Cat() 每个类可以有多个对象,每个对象都会开辟新的存储空间id
tom.ect() #对象调用类中封装的方法,对象名.方法名()
tom.drink() #对象调用类中封装的方法
使用self在方法内部输出每一只猫的名字
由哪一个对象调用的方法,方法内self就是哪一个对象的引用
1.在类封装的方法内部,self就表示当前调用方法的对象自己
2.调用方法时,程序员不需要传递self参数
在方法内部:
1.也可以通过self访问对象的属性
2.也可以通过self调用其他的对象方法
#改造代码如下
class Cat:
def eat(self):
print("%s 爱吃鱼"%self.name)
tom=Cat()
tom.name="Tom"
tom.eat()
lazy_cat=Cat()
lazy_cat.name="大懒猫"
lazy_cat.eat()
在日常开发中,不推荐在类的外部给对象增加属性,如果在运行时,没有找到属性,程序就会报错,对象应该包含有哪些属性,应该封装在类的内部
class Student:
def __init__(self,name,age):
self.name=name
self.age=age
print("我的名字叫",name,"今年岁数是",age)
xiaoming=Student("小明",20)
xiaohong=Student("小红",18)
类的创建
#类的创建:
class Student:
native_place="吉林" #类属性
def __init__(self,name,age): #name,age为实例属性
self.name=name
self.age=age
def eat(self):
print("我正在吃饭...")
#实例方法
def info(self):
print("我的名字叫:",self.name,"年龄是:",self.age)
#类方法
@classmethod
def cm(cls):
print("类方法")
#静态方法
@staticmethod
def sm():
print("静态方法")
#对象的创建,创建Student类的对象
stu1=Student("张三",20) #创建对象
stu1.info() #对象调用类方法
stu1.eat()
print("我的名字叫",stu1.name,"今年的岁数是:",stu1.age,stu1.eat)
print(stu1)
类属性、类方法、静态方法
类属性:类中方法外的变量成为类属性,被该类的所有对象所共享
类方法:使用@calssmethod修饰方法,使用类名直接访问的方法
静态方法:使用@staticmethod修饰主法,使用类名直接访问的方法
print(Student.native_place) #访问类属性
Student.cm() #调用类方法
Student.sm() #调用静态方法
stu3=Student("张三",20)
stu4=Student("李四",30)
print(stu3.native_place) #吉林
print(stu4.native_place) #吉林
Student.native_place="天津" #改变类属性
print(stu3.native_place) #天津
print(stu4.native_place) #天津
来源:https://blog.csdn.net/weixin_53466908/article/details/122851914


猜你喜欢
- 使用本文提供的JavaScript脚本,配合Dreamweaver的层和行为的运用,可以在页面中显示可拖动的精美月历。具体制作步骤如下:1、
- 前言最近又在重新学习编译原理了,其实两年前也复习过,当初是为了能实现通过 MySQL 的 DDL 生
- 很多小伙伴在学习Django的时候,总是搞不定版本的问题,下面来一起看一张表,轻松解决Python版本和Django版本的兼容问题。Djan
- 大概来介绍一下 Django Allauth 改造的期间遇到的一些问题和改造方法,在此之前我只想说——Django Allauth 是屑。为
- Ubuntu 18.04下1、安装python 2._版本,输入 sudo apt install python命令行输入 python或p
- 标准XMLHttpRequest操作 方法描述abort()停止当前请求getAllResponseHeaders()把HTTP请求的所有响
- 1、看机器配置,指三大件:cpu、内存、硬盘2、看mysql配置参数3、查系mysql行状态,可以用mysqlreport工具来查看4、查看
- 需求:1. 可输入代码,并且代码语法高亮2. 支持编辑和不可编辑模式3. 提交到后端到代码内容为字符串格式实现在gitbug上找到vue-p
- 依赖包:pip install paramiko源码demo:from time import *import paramiko# 定义一个
- 最近尝试了mysql的最新版本5.5.581.最新发布的mysql 5.5.8没有适合solaris 9的版本;这个在安装时需要注意2.它发
- 一、概念 1. 数据库 (Database)什么是数据库?数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下
- 纯粹的截取字符串其实比较简单,用一个Left就搞定,但一个是全英文标题,一个是全中文标题,或中文混合排在一起,长短不一就很明显了,要考虑到中
- 1. 引言在日常工作中,大家都需要进行字典的相关操作,对于某些初学者,经常会写一堆繁琐的代码来实现某项简单的功能。本篇文章重点介绍一些在Py
- 我们前期开发了一个只有公司客服人员才能使用的系统——有限的几个客服人员。就是这有限的几个客服人员前几天突然就提出这样的问题:我们每隔很短一段
- 因为工作原因,需要定期清理某个文件夹下面创建时间超过1年的所有文件,所以今天集中学习了一下Python对于本地文件及文件夹的操作。网上 这篇
- #! /usr/bin/env python#coding=utf-8#实现哈希表(线性地址再散列)def ChangeKey(key,m,
- 在写 Python 代码的时候,一个很好的编码实践就是使得你的代码简洁,易懂。组织代码,设置变量,以及给函数有意义的名字,都是几个不错的方法
- PyQt中的线程类 QtCore.QThread ,使用时继承QThread类启动界面的线程暂称为UI线程。界面执行命令时都在自己的UI线程
- 本文实例讲述了MySQL切分查询用法。分享给大家供大家参考,具体如下:对于大查询有时需要‘分而治之',将大查询切分为小查询: 每个查
- 前不久有个正要毕业的网友给我发邮件,他毕业设计需要实现锁屏的效果,但是他没有能看懂我之前发布的对话框源码,他问能不能把锁屏相关代码说明下,我