python基础之定义类和对象详解

 更新时间:2022年02月10日 10:28:02   作者:Python-派大星  
这篇文章主要为大家详细介绍了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)  #天津

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!      

相关文章

  • Python利用wxPython模块打造ChatGPT式打字效果程序

    Python利用wxPython模块打造ChatGPT式打字效果程序

    这篇文章主要为大家介绍了如何利用Python和wxPython模块打造一个ChatGPT式打字效果程序,从而增强用户体验或提高应用程序的可读性,感兴趣的可以了解一下
    2023-05-05
  • Python免登录实现域名解析的示例详解

    Python免登录实现域名解析的示例详解

    这篇文章主要介绍了如何利用编写python脚本,实现通过dnspod api获取个人域名内的dns解析记录,从而实现域名的解析、修改和删除,需要的可以参考一下
    2023-03-03
  • 插入排序_Python与PHP的实现版(推荐)

    插入排序_Python与PHP的实现版(推荐)

    下面小编就为大家带来一篇插入排序_Python与PHP的实现版(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 使用Python实现优雅生成假数据

    使用Python实现优雅生成假数据

    Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,这篇文章主要为大家详细介绍了Python如何使用Faker生成假数据,感兴趣的小伙伴可以了解下
    2023-12-12
  • opencv python简易文档之图像处理算法

    opencv python简易文档之图像处理算法

    OpenCV是一个开源库,包含了许多计算机视觉算法,它在计算机视觉和图像处理中起着重要作用,用于实时操作,其效率足以满足工业上的要求,这篇文章主要给大家介绍了关于opencv python简易文档之图像处理算法的相关资料,需要的朋友可以参考下
    2021-08-08
  • python使用pika库调用rabbitmq参数使用详情

    python使用pika库调用rabbitmq参数使用详情

    这篇文章主要介绍了python使用pika库调用rabbitmq参数使用详情,文章通过展开文章主题分享了三种方式,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • 以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法

    以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法

    这篇文章主要介绍了以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法,Pyspider是一个开源项目、用Python语言编写十分简洁且具有爬虫程序的代表性,需要的朋友可以参考下
    2015-03-03
  • Python基于requests库爬取网站信息

    Python基于requests库爬取网站信息

    这篇文章主要介绍了python基于requests库爬取网站信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python 数据结构之堆栈实例代码

    Python 数据结构之堆栈实例代码

    这篇文章主要介绍了Python 数据结构之堆栈实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • 理解Python数据离散化手写if-elif语句与pandas中cut()方法实现

    理解Python数据离散化手写if-elif语句与pandas中cut()方法实现

    这篇文章主要介绍了通过手写if-elif语句与pandas中cut()方法实现示例理解Python数据离散化详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论