ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python入行027(面向对象)

2020-04-07 22:08:11  阅读:326  来源: 互联网

标签:__ 入行 mrz python 对象 027 Student print male


1 对象的概念

  可以将对象想象成容器,用来盛放数据和功能,使用对象的概念将原本分散的数据和功能整合到一起,这么做既方便使用也提高了程序的可扩展性。

2 类与对象

  我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象都重复存一份,这样每个对象里只需存自己独有的数据即可,极大地节省了空间。所以,如果说对象是用来存放

数据与功能的容器,那么类则是用来存放多个对象相同的数据与功能的容器。

  在程序中必须要先定义类,再通过调用类产生对象。

3 面向对象编程

3.1 类的定义和实例化    

  类的命名使用驼峰体方式,类体的代码在类定义阶段就会执行,因而会产生新的名称空间用来存放类中定义的名字,可以打印Student.__dict__来查看类这个容器内盛放的东西。

class Student:
    school = '科技大学'

    def choose(self):
        print(f'{self.name} 正在选课')

print(Student.__dict__)

  调用类的过程称为将类实例化,拿到的返回值就是程序中的对象,或称为一个实例。

  使用__init__()方法可以在类实例化的过程中定制对象独有的属性:

class Student:
    school = '科技大学'
    def __init__(self, name, age, male):
        self.name = name
        self.age = age
        self.gender = male

    def choose(self):
        print(f'{self.name} 正在选课')

mrz = Student('mrz', 18, 'male')
print(mrz.__dict__)
>>> {'name': 'mrz', 'age': 18, 'male': 'male'}

3.2 属性访问

  3.2.1 类属性与对象属性

  可以对类属性和对象属性进行增删改查操作。

  3.2.2 属性的查找顺序与绑定方法

  对象的名称空间里只存放着对象独有的属性,而对象们相似的属性是存放于类中的。对象在访问属性时,会优先从对象本身的__dict__中查找,未找到,则去类的__dict__中查找。

# 对象获取的类属性id是一致的
mrz = Student('mrz', 18, 'male') mgy = Student('mgy', 10, 'male') print(id(mrz.school)) print(id(mgy.school)) >>> 1502755346720 >>> 1502755346720

  类中定义的函数主要是给对象使用的,而且是绑定给对象的,虽然所有对象指向的都是相同的功能,但是绑定到不同的对象就是不同的绑定方法,内存地址各不相同。

mrz = Student('mrz', 18, 'male')
mgy = Student('mgy', 10, 'male')
print(mrz.choose)
print(mgy.choose)
>>> <bound method Student.choose of <__main__.Student object at 0x00000208A55EFF98>>
>>> <bound method Student.choose of <__main__.Student object at 0x00000208A55F8080>>

 

标签:__,入行,mrz,python,对象,027,Student,print,male
来源: https://www.cnblogs.com/mmmmmrz/p/12654696.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有