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

总结

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

时间: 2022-02-09

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

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

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

javascript面向对象三大特征之继承实例详解

本文实例讲述了javascript面向对象三大特征之继承.分享给大家供大家参考,具体如下: 继承 在JavaScript中的继承的实质就是子代可以拥有父代公开的一些属性和方法,在js编程时,我们一般将相同的属性放到父类中,然后在子类定义自己独特的属性,这样的好处是减少代码重复.继承是面向对象的基础,是代码重用的一种重要机制. --此文整理自 <jQuery 开发从入门到精通> ,这是本好书,讲的很详细,建议购买阅读. 继承的作用 实现继承的主要作用是: ① 子类实例可以共享超类属性和方法. ②

Java面向对象编程(封装/继承/多态)实例解析

本文主要介绍了面向对象的三大特征实例解析,下面看看具体内容. 封装 封装一个Teacher和Student类 package com.hz.test; public class Teacher { private String name; private String majorDirection; private String teachCourse; private int teachAge; public Teacher() { super(); } public Teacher(Stri

javascript面向对象三大特征之多态实例详解

本文实例讲述了javascript面向对象三大特征之多态.分享给大家供大家参考,具体如下: 多态 从某种意义上来说,多态是面向对象中重要的一部分,也是实施继承的主要目的. 一个实例可以拥有多个类型,它既可以是这种类型,也可以是那种类型,这种多种状态被称为类的多态. 多态的表现形式很多,其中继承和重载都是多态的表现形式. --整理自<jQuery开发从入门到精通> 继承 继承本身是多态的一种实现.详情请参考前面一篇:https://www.jb51.net/article/166097.htm

javascript面向对象三大特征之封装实例详解

本文实例讲述了javascript面向对象三大特征之封装.分享给大家供大家参考,具体如下: 封装 封装(Encapsulation):就是把对象内部数据和操作细节进行隐藏.很多面向对象语言都支持封装特性,提供关键字如private来隐藏某些属性和方法.要想访问被封装对象中的数据,只能使用对象专门提供的对外接口,这个接口一般为方法.调用该方法能够获取对象内部数据. 在JavaScript语言中没有提供专门的信息封装关键字,不过可以使用闭包来创建,只允许从对象内部访问的方法和属性.另外,接口也是数据

详解java封装继承多态

面向对象编程(Object Oriented Programming)有三大特性:封装.继承.多态.在这里,和大家一起加深对三者的理解. 封装 封装可以拆开理解,装,是把数据和方法放进了类里:封,把装进去的数据和成员方法加上访问权限.对于外界,内部细节是透明的,暴露给外面的是它的访问方法. 继承 继承,是为了重用父类代码.两个类若具有is a的关系就可以用extends.另外,继承也为实现多态做了铺垫. 多态 程序中定义的引用变量(java有两大数据类型,内部数据类型和引用数据类型)所指向的具体

JavaScript使用prototype原型实现的封装继承多态示例

本文实例讲述了JavaScript使用prototype原型实现的封装继承多态.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&

Python面向对象之类的封装操作示例

本文实例讲述了Python面向对象之类的封装操作.分享给大家供大家参考,具体如下: 承接上一节<Python面向对象之类和实例>,学了Student类的定义及实例化,每个实例都拥有各自的name和score.现在若需要打印一个学生的成绩,可定义函数 print_score() 该函数为类外的函数,如下: class Student(object): def __init__(self, name, score): self.name = name self.score = score May

PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)

本文实例讲述了PHP面向对象的特性.分享给大家供大家参考,具体如下: Demo1.php <?php header('Content-Type:text/html; charset=utf-8;'); //创建一个电脑类 class Computer { //什么叫做类内,就是创建类的花括号内的范围叫做类内,其他地方则类外. //public 是对字段的公有化,这个字段类外即可访问,赋值和取值 public $_name = '联想'; } $computer = new Computer();

举例讲解Python面向对象编程中类的继承

python创建一个类很简单只需要定义它就可以了. class Cat: pass 就像这样就可以了,通过创建子类我们可以继承他的父类(超类)的方法.这里重新写一下cat class Cat: name = 'cat' class A(Cat): pass print A.name # cat 经典类 我们也可以这样,让A多继承. class Cat: name = 'cat' class Dog: name = 'dog' class A(Cat, Dog): pass print A.nam

Python面向对象程序设计类的封装与继承用法示例

本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义本身就是封装的体现. 狭义的封装:一个类的某些属性,不希望外界直接访问,而是把这个属性私有化[只有当前类持有],然后暴露给外界一个访问的方法. 封装的本质:就是属性私有化的过程. 封装的好处:提供了数据的复用性,保证了数据的安全性. 举例:插排 2.使用 class Person(object):