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)  #天津

总结

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

(0)

相关推荐

  • python基础:面向对象详解

    目录 1.私有方法 2.私有属性 3.类部调用私有属性和私有方法 4.子类不能继承父类私有属性和方法 5.修改私有属性的值 6.实例属性(对象属性)可以通过实例化对象调用,类不能调用 7.通过实例(对象)去修改类属性对象修改类属性,只对本对象有效果,对别的对象没有影响 8.类方法 9.静态方法 10.__new__方法 11.单例模式 总结 1.私有方法 2.私有属性 3.类部调用私有属性和私有方法 4.子类不能继承父类私有属性和方法 5.修改私有属性的值 6.实例属性(对象属性)可以通过实例化

  • python定义类self用法实例解析

    这篇文章主要介绍了python定义类self用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在定义类的过程中,无论是显式的创建类的构造方法,还是向类中添加实例方法,都要将self参数作为方法的第一个参数. class Person: def __init__(self): print("正在执行构造方法") def study(self, name): print(name, "正在学python")

  • Python全栈之面向对象基础

    目录 1. 面向对象oop了解 2. 对象的相关操作 小提示: 3. 类的相关操作 4. 类对象的删除操作 小提示: 5. 小练习 小提示: 答案: 总结 1. 面向对象oop了解 # ### oop 面向对象的程序开发 # (1) 类的定义 # 1 class Car: pass # 2 推荐 class Car(): pass # 3. class Car(object): pass # (2)类的实例化 class Car(): pass obj = Car() print(obj) #

  • Python面向对象三大特征 封装、继承、多态

    目录 1.封装 1.1 私有属性和私有方法 2.继承 2.1 方法的重写 2.2 在子类方法中调用父类方法 2.3 多继承 2.4 新式类和经典类 3.多态 1.封装 封装: 根据 职责 将 属性 和 方法 封装到一个 抽象的类 中将数据(属性)和行为(方法)包装到类对象中.在方法内部对属性进行操作,在类对象的外部调用方法.这样无需关心方法 内部的具体实现,从而隔离了复杂度 封装是面向对象编程的一大特点 面向对象编程的第一步.将属性和方法封装到一个抽象的类中 外界使用类创建对象,然后让对象调用方

  • python中的3种定义类方法

    目录 1.普通方法 2.类方法 3.静态方法 4.总结 python中的3种定义类方法: 普通方法 类方法(@classmethod) 类方法(@classmethod) 1.普通方法 创建普通的方法的方式有两种(class A() & class B()). class A(): def __init__(self, name, age): self.name = name self.age = age def get_name(self): print('my name is', self.

  • python定义类的简单用法

    python定义的类使用方法: 使用"obj=类名()"语句将类实例化,然后用"obj.函数名"就可以调用类里面定义的各种函数了 示例如下: 将Bili类实例化,然后就可以使用类里的函数 内容扩展: 类的定义 #!/usr/bin/env python #coding:utf8 class Hotel(object): """docstring for Hotel""" def __init__(self,

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

    定义简单的类 面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了! 定义只包含方法的类 在python中,要定义一个只包含方法的类,语法格式如下: #用class定义类名 class 类名: def 方法1(self,参数列表) #方法的属性中有且仅有一个self pass def 方法2(self,参数列表) #类之外定义的def是函数,在类里面定义的def叫做方法,而且括号里必须要有self pass class Student: pass

  • Python基础面向对象之继承与派生详解

    目录 一.面向对象三大特征之继承 1.继承的概念 2.继承的本质 3.继承的实操 4.继承后名字查找的顺序 5.经典类与新式类 二.派生 1.派生的概念 2.派生的方法 一.面向对象三大特征之继承 python三大特征: 封装.继承.多态 三者中继承最为核心,实际应用多,感受较为直观 封装和多态略微抽象 1.继承的概念 继承的含义: 在现实生活中,继承表示人与人之间资源的从属关系 例如:儿子继承父亲 在编程的世界中,继承表示类与类之间的资源从属关系 例如:类a继承类b 继承的目的: 在现实生活中

  • Python面向对象总结及类与正则表达式详解

    Python3 面向对象 -------------------------------------------------------------------------------- 一丶面向对象技术简介 •类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. •方法:类中定义的函数. •类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. •数据成员:类变量或者实例变

  • python基础之Socket套接字详解

    前言 Python语言提供了Socket套接字来实现网络通信. Python的应用程序通常通过Socket"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. 服务器和客户端的源代码 服务器端 #coding=utf-8 #创建TCP服务器 import socket import time from time import ctime HOST = '127.0.0.1' PORT = 8080 BUFSIZE=1024 sock = socket.s

  • Python基础之Numpy的基本用法详解

    一.数据生成 1.1 手写数组 a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) # 一维数组 b = np.array([[1, 2], [3, 4]]) #二维数组 1.2 序列数组 numpy.arange(start, stop, step, dtype),start默认0,step默认1 c = np.arange(0, 10, 1, dtype=int) # =np.arange(10) [0 1 2 3 4 5 6 7 8 9] d

  • Python基础语法之变量与数据类型详解

    目录 一. 输出函数print 1.1 可以输出数字 1.2 可以输出字符串 1.3 可以输出表达式 1.4 可以输出至文件中 二. 变量与数据类型 2.1 整型 2.2 浮点型 2.3 字符串型 2.4 布尔型 3. 数据类型转换 3.1 int() 3.2 float() 3.3 str() 一. 输出函数print 在python中,print()是可以直接使用的输出函数,将数据输出到控制台上. 1. print函数的使用 1.1 可以输出数字 只要是数字都可以输出 # author: 爪

  • python基础之停用词过滤详解

    目录 一.什么是停用词 二.加载停用词字典 三.删除停用词 四.分词以及删除停用词 五.直接删除停用词(不分词) 一.什么是停用词 在汉语中,有一类没有多少意义的词语,比如组词"的",连词"以及".副词"甚至",语气词"吧",被称为停用词.一个句子去掉这些停用词,并不影响理解.所以,进行自然语言处理时,我们一般将停用词过滤掉. 而HanLP库提供了一个小巧的停用词字典,它位于Lib\site-packages\pyhanlp\

  • Python基础学习之函数方法实例详解

    本文实例讲述了Python基础学习之函数方法.分享给大家供大家参考,具体如下: 前言 与其他编程语言一样,函数(或者方法)是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. python的函数具有非常高的灵活性,可以在单个函数里面封装和定义另一个函数,使编程逻辑更具模块化. 一.Python的函数方法定义 函数方法定义的简单规则: 1. 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 2. 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 3.

  • JavaScript中定义类的方式详解

    本文实例讲述了JavaScript中定义类的方式.分享给大家供大家参考,具体如下: Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定义,并创建对象. 一.定义类并创建类的实例对象 在Javascript中,我们用function来定义类,如下: function Sh

  • Javascript创建类和对象详解

    现总结一下Javascript创建类和对象的几种方法: 1.原始的创建方法: <script type="text/javascript"> var person = new Object(); person.name="Amy"; person.sex="Woman"; person.show=function(){ document.write("name is: "+this.name+" ; se

随机推荐