python学习:面向对象:类、对象、继承

在这里插入图片描述

一、类的定义

 ① 约定成俗的类的命名方式:
  1)首字母大写
  2)为了与其他进行区分尽量避免使用 ‘_’,建议采用StudentHomework小驼峰的格式
 ②类的常规格式:

class Student():
	# 定义变量(数据成员)
	student_sum = 80 #类变量
	
	# 构造函数
	def __init__(self, name, age)
		# 其中的self.name 和 self.age称为实例变量
		self.name = name
		self.age = age
		self.__score = 0 # 这个时候score就是私有的,不能使用[对象.score]直接访问
		# 实例方法访问实例变量( 注意这里不能直接写name)
		print(self.name)
		# 实例方法访问类变量
		print(self.__class__.sum)

	def mark(self,score):
		self.__score = score
		if score < 0:
			retrun "不能输入负分"
		print(self.name + "得到的分数为:" + str(self.__score))
	
	# 定义实例方法:类中的方法强制传入固定参数 self(特征)
	def write_homework(self)
		print("write homework")
	
	# 定义类方法
	@classmethed
	def puls_sum(cls):
		cls.sum += 1

	# 定义静态方法
	@staticmethed
	def add(x,y):
		print(x+y)

二、类的使用(类的实例化)

 student = Student()

 以上为类的实例化,当然这里实例化的student还没有意义。详细的在后面构造函数处解释

 调用类下的方法:student.write_homework()

三、类的几个重要知识

  1. 类的最基本作用:封装
  2. 类的最基本原则:类只负责定义和描述一个事物,但是不执行代码

四、类与模块的区别

  函数 – 方法
  变量 – 数据成员

五、类和对象

  1. 首先对类进行描述记住一句重要的话:数据成员刻画“学生”行为特征,方法实现行为
  2. 类可以看做一个模板,通过一个模板可以产生很多对象(在类实例化之后并给实例化出的变量赋值变为对象;这里需要怎么赋值呢?这就引出了构造函数的概念

六、构造函数:

在最开例举的类的常规格式中有一个方法__init__(self)这是类中的一个特殊的方法,我们将它称为构造函数。

  1. 构造函数的特点
    ① 实例化时会自动调用构造函数(构造函数也可以被人为调用,但是人为调用没有任何意义,所以很少看到人为去调用构造函数)
    ② 构造函数不能返回除None之外的任何值

  2. 构造函数的作用
    构造函数可以让类生成不同的对象,一般用来初始化对象的特征(回答二中的问题)

这个时候我们便可以真正的构建了一个对象了:student = Student(“小明”,18)

七、类变量和实例变量

  1. 类变量:和类相关联在一起
  2. 实例变量:和对象相关联在一起

 二者具体存在什么区别呢?可以通过两个打印查看一下
   print(student.name):查看对象的name为“小明”
   print(Student.name):查看类的name为‘ ’
 通过二者的对比可以明显的看出类变量和实例变量的区别

八、类方法和静态方法

  1. 使用修饰器修饰,如一种代码示例
  2. 类/静态方法是不能访问实例变量的

九、成员(数据成员和方法)可见性

在python中,私有成员的声明方法是在成员前添加“__”双下划线,此时该成员就不能通过[对象.成员来访问了];
注意:① 此时对于数据成员的使用时不会保存,但是本质上此时时动态增加了一个变量而不是改变了其值
② python中的私有成员实际上是python自己将成员名前面增加了【 _类名】,因此还是可以通过python改变后的值来改变的,这也是python的一个缺点;(可以通过【对象.__dict__ 】查看对象中存在的数据成员)
在这里插入图片描述

十、继承

### 父类
class Human():
	# 定义变量(数据成员)
	student_sum = 80 #类变量
	
	# 构造函数
	def __init__(self, name, age)
		# 其中的self.name 和 self.age称为实例变量
		self.name = name
		self.age = age

### 子类
class Student(Human):
	def __init__(self,school,name,age):
		self.school = school
		# 方法一:
		#Human.__init__(self,name,age)
		# 方法二:
		super(Student, self).__init__(name, age)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值