Python面向对象编程核心思想
原文地址https://blog.csdn.net/weixin_42134789/article/details/80194788
https://blog.csdn.net/happyjxt/article/details/50760467
类(Class)与对象(Object)

# 创建一个学生类
class Student:
# 定义学生属性,初始化方法
def __init__(self, name, score):
self.name = name
self.score = score # 定义打印学生信息的方法
def show(self):
print("Name: {}. Score: {}".format(self.name, self.score))
在这个案例中,我们只定义了一个抽象的类,电脑并没有创建什么存储空间。只有当我们完成类的实例化(Instance)时,电脑才会创建一个具体的对象(Object),并为之分配存储空间。所以对象(Object)是类(Class)的一个实例。
要创建一个具体的学生对象(Object),我们还需要输入:
student1 = Student("John", 100)
student2 = Student("Lucy", 99)

这个新Student类看上去应该是这样的:
# 创建一个学生类
class Student: # number属于类变量,定义在方法外,不属于具体实例
number = 0 # 定义学生属性,初始化方法
# name和score属于实例变量,定义在方法里
def __init__(self, name, score):
self.name = name
self.score = score
# 此处有错误
number = number + 1 # 定义打印学生信息的方法
def show(self):
print("Name: {}. Score: {}".format(self.name, self.score))

# 创建一个学生类
class Student: # number属于类变量,不属于某个具体的学生实例
number = 0 # 定义学生属性,初始化方法
# name和score属于实例变量
def __init__(self, name, score):
self.name = name
self.score = score
Student.number = Student.number + 1 # 定义打印学生信息的方法
def show(self):
print("Name: {}. Score: {}".format(self.name, self.score)) # 实例化,创建对象
student1 = Student("John", 100)
student2 = Student("Lucy", 99) print(Student.number) # 打印2
print(student1.__class__.number) # 打印2

class Student: # number属于类变量,不属于某个具体的学生实例
number = 0 # 定义学生属性,初始化方法
# name和score属于实例变量
def __init__(self, name, score):
self.name = name
self.score = score
Student.number = Student.number + 1 # 定义打印学生信息的方法
def show(self):
print("Name: {}. Score: {}".format(self.name, self.score)) # 定义类方法,打印学生的数量
@classmethod
def total(cls):
print("Total: {0}".format(cls.number)) # 实例化,创建对象
student1 = Student("John", 100)
student2 = Student("Lucy", 99) Student.total() # 打印 Total: 2

# 创建一个学生类
class Student: # 定义学生属性,初始化方法
# name和score属于实例变量, 其中__score属于私有变量
def __init__(self, name, score):
self.name = name
self.__score = score # 定义打印学生信息的方法
def show(self):
print("Name: {}. Score: {}".format(self.name, self.__score)) # 实例化,创建对象
student1 = Student("John", 100) student1.show() # 打印 Name: John, Score: 100
student1.__score # 打印出错,该属性不能从外部访问。

# 创建一个学生类
class Student: # 定义学生属性,初始化方法
# name和score属于实例变量, 其中score属于私有变量
def __init__(self, name, score):
self.name = name
self.__score = score # 利用property装饰器把函数伪装成属性
@property
def score(self):
print("Name: {}. Score: {}".format(self.name, self.__score)) # 实例化,创建对象 student1 = Student("John", 100) student1.score # 打印 Name: John. Score: 100

# 创建父类学校成员SchoolMember
class SchoolMember: def __init__(self, name, age):
self.name = name
self.age = age def tell(self):
# 打印个人信息
print('Name:"{}" Age:"{}"'.format(self.name, self.age), end=" ") # 创建子类老师 Teacher
class Teacher(SchoolMember): def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age) # 利用父类进行初始化
self.salary = salary # 方法重写
def tell(self):
SchoolMember.tell(self)
print('Salary: {}'.format(self.salary)) # 创建子类学生Student
class Student(SchoolMember): def __init__(self, name, age, score):
SchoolMember.__init__(self, name, age)
self.score = score def tell(self):
SchoolMember.tell(self)
print('score: {}'.format(self.score)) teacher1 = Teacher("John", 44, "$60000")
student1 = Student("Mary", 12, 99) teacher1.tell() # 打印 Name:"John" Age:"44" Salary: $60000
student1.tell() # Name:"Mary" Age:"12" score: 99

# 创建子类学生Student
class Student(SchoolMember): def __init__(self, name, age, score):
SchoolMember.__init__(self, name, age)
self.score = score def tell(self):
super().tell() # 等同于 SchoolMember.tell(self)
print('score: {}'.format(self.score))
Python面向对象编程核心思想的更多相关文章
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- Python面向对象编程(上)
Python不仅支持面向过程编程,同时也支持面向对象编程.面向工程就是分析解决问题所需的步骤,然后用函数把这些步骤逐一实现,使用的时候再一个个调用函数就可以.面向对象则是把解决的问题按照一定规则划分为 ...
- python面向对象编程学习
python面向对象编程 基本概念理解 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作 ...
- 图解python | 面向对象编程
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...
- python 面向对象编程(一)
一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class c ...
- Python面向对象编程指南
Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...
- python面向对象编程进阶
python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...
- Python面向对象编程(下)
本文主要通过几个实例介绍Python面向对象编程中的封装.继承.多态三大特性. 封装性 我们还是继续来看下上文中的例子,使用Student类创建一个对象,并修改对象的属性.代码如下: #-*- cod ...
- Python 面向对象编程——访问限制
<无访问限制的对象> 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑.但是,从前面Student类的定义来看(见:Py ...
随机推荐
- unity shader入门(四):高光
高光反射计算公式(phong模型)Cspecular=(Clight*Mspecular)max(0,v*r)mgloss mgloss为材质的官泽度,也成反射度,控制高光区域亮点有多大 Mspecu ...
- RSA加密&解密【Java&Scala】
一.简介 RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用. RSA公开密钥密码体制.所谓公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解 ...
- map put相同的key
Map添加相同的key 2018年09月09日 10:37:12 Airport_Le 阅读数:6479 HashMap是的key是不能重复的,如果有相同的key,最后一个key对应的value会 ...
- idea中flink启动报错org.apache.flink.api.common.ExecutionConfig$GlobalJobParameters
启动时出现如下报错: Caused by: java.lang.ClassNotFoundException: org.apache.flink.api.common.ExecutionConfig$ ...
- 经典sql server基础语句不全
1.几个简单的基本的sql语句 选择: select * from table1 where 范围 插入: insert into table1(field1,field2) values(value ...
- django的缓存实例应用
那么多的可配置方法,我们用那个呢. 首先在setting中配置你想要的缓存,我这里就用文件的方式是配置.如图: 第二步: 第三步: 第四步: 实现结果: 总结: 都是指明当前资源的有效期,控制浏览器 ...
- 2020秋招嵌入式面经——地平线、小米、CVTE、大华、绿米
地平线提前批 一面凉: 投递简历过程:官网投递9月份之前投的都是提前批,投了北京.上海.南京地区的嵌入式软件研发岗,北京和上海的都被筛掉了,南京的捞了我,hr小姐姐打电话邀约面试. 一面凉: 电话面试 ...
- Zabbix 完整的监控流程
目录 1.Zabbix的监控历程概念 1.1 基本概念 1.2 流程图 2.创建主机并加入主机组 3.添加新加主机的应用集(aplication) 4.添加监控项(item) 5.告警触发器配置(Tr ...
- Codeforces A. Game on Tree(期望dfs)
题目描述: Game on Tree time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Flume架构以及应用介绍(转)
在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程: 从Hadoop的业务开发流程图中可以看出,在大数据的业务处理过程中,对于数据的采集是十分重要的一步,也是不可避免的一步,从而引出 ...