Python基础知识-----面向对象

面向对象知识小结

  1. 什么是面向对象

    	面向对象是以一种编程思想,核心是对象,而对象是特征与功能的结合体。
    	是基于结构分析,以数据为中心的程序设计思想
    	优点:
    		可扩展性强,不需要关心具体步骤
    	缺点:
    		编程复杂度高,需要设计对象
    

    1.类
    是具有相同特征和行为的一类事物的统称
    作用: 用来描述该类对象具备什么样的特征和行为
    其中,表明事物特征的叫属性;表明事物的行为或功能的叫方法
    属性和方法又称为成员

    类的定义:
    		class 类名:
    			类体
    

    类的命名遵循变量名的命名规则,一般采用驼峰命名法

    2.对象
    具体的某一事物 是单个的个体
    类到对象的过程叫做实例化, 对象可称之为实例 (即定义类后,创建对象)
    程序中,先定义类,然后实例化对象

class Animal:   # 创建一个动物类
	def __init__(self,age):   
		self.age = age
	def eat(self):
		print('吃东西....')
#实例化对象;类名加括号相当于执行Animal.__init__()初始化方法
cat1 = Animal(2)   # 实例化对象  
print(cat1.age)  #  结果:2
cat1.eat()   #调用方法eat()  结果:吃东西....

关于self变量:
self是哪个对象调用方法或属性,self就是那个变量。
self在对象方法中表示当前对象本身,__init__()是初始化函数,在创建对象时,自动将对象本身传给__init__()的第一个参数

__init__()方法: 创建对象时自动执行
__str__()方法:有返回值,默认返回对象的内存地址。在打印对象时默认调用__str__()方法

class Stu:
	class_id = 1001  # 类属性 静态属性 可以使用类调用也可以使用对象调用 Stu.class_id 或者 stu1.class_id 创建多个对象时共享一份类属性
	def __init__(self,name,age):  # 实例(对象)属性  对象初始化  
		self.name = name
		self.age = age
	def __str__(self):   # 打印对象时调用str方法,返回
		return f"{self.name}年龄{self.age}岁了,在{stu1.class_id}教室上课"
	def study(self):   #  实例(对象)方法
		print('爱学习!')
	
stu1 = Stu('Lucy',16)
stu2 = Stu('Jerry',20)
print(stu1)   # 执行str 方法
stu1.study()  # 对象调用study方法
print(Stu.class_id)
print(stu2.class_id)

>>>
Lucy年龄16岁了,1001教室上课
爱学习!
1001
1001

类属性:
静态属性 在类对象中定义的属性,且多个实例对象之间共享一份类属性。
类属性的唯一性

使用方式:
	类名.类属性   或者   对象名.类属性

注意:
类属性中,
1.对于不可变数据类型:对象名.类属性名 = 值 是给对象中添加属性名,不能修改类属性的值
2.对于可变数据类型:如果对象是修改可变数据类型变量中的数据,会修改类属性的值,也是给该对象添加属性

class Course:
	language = 'Chinese'
	lst = ['a','b']
	def __init__(self,course_name,price):
		self.course_name = course_name
		self.price = price
	def teach(self):
		pass
		
python = Course('python',1234)
#修改前
print(python.language)
print(Course.language)
print(Course.lst)
print(python.lst)
print('-----'*10)
# 修改后
python.language = 'English'
python.lst.append('c')

print(python.language)
print(Course.language)   
print(Course.lst)
print(python.lst)
>>>
Chinese
Chinese
['a', 'b']
['a', 'b']
--------------------------------------------------
English
Chinese    
['a', 'b', 'c']
['a', 'b', 'c']
  1. 面向对象的特性
    三大特性: 封装、继承、多态
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值