Python基础之面向对象编程

一、面向对象由来

1 定义变量,定义函数,面向过程编程
2 定义一个来,类有属性(变量,特征),有方法(函数,技能)

二、面向对象编程和面向过程编程

1 面向过程编程(procedure oriented Programming)(POP)
面向过程编程的核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么,然后再干什么
2 面向对象编程(object oriented programming)(OOP)
面向对象编程的核心是对象二字,对象时特征与技能的结合体

三、类和对象

# 造一个张三对象,他有体重身高,还有吃饭技能(特征与技能的结合体:属性和方法)
# 定义一个类 Person
class Person:
	height = 180
	weight = 70
	# eat函数,就是方法特征
	def eat(self):
		print('吃饭技能')

# 定义对象(类的实例化,得到对象)
zhangsan = Person()
# 使用对象
print(zhangsan.height)
print(zhangsan.weight)
zhangsan.eat()

四、定制对象独有特征

class Student:
	school = '清华'
	def choose_course(self):
		print('选课技能')
s1 = Student()
s1.name = 'alex' # 给对象s1定制独有特征姓名

五、对象属性查找顺序

class Student:
    school = '某名牌大学'
    def choose_course(self):  # self必须写,哪个对象来调用我,self就是哪个对象
        print(self.school)
        print('选课技能')

# 定义了两个不同的新对象
s1 = Student()
s2 = Student()
# 下面打印出来都是 某名牌大学,因为s1对象和s2对象的名称空间中,都没有school属性,共用类的名称空间中的school属性
print(s1.school)
print(s2.school)

# s1这个人转学去了北大
s1.school = '北大'
print(s1.school)  # 北大
print(s2.school)  # 某名牌大学
print(Student.school)  # 某名牌大学

# 对象自己有属性,优先用自己的,没有才用类的
# 先从对象自己的名称空间找,没有则去类中找,如果类也没有则报错
# 对象调用方法,使用的就是类中定义的方法
# 类中定义的方法,是绑定给对象的,对象来使用
# 哪个对象来调用方法,self就是哪个对象
s1.school = '北大'
s2.school = '清华'

s1.choose_course()
s2.choose_course()
# 对象属性的查找顺序:
# 对象自己--》类中---》报错
# 对象方法的查找顺序:
# 所有对象都用类的方法---》方法有self参数,通过self参数区分是哪个对象调用的

# 类名.__dict__   类的名称空间
# 对象.__dict__   对象的名称空间
# 所以类中的属性应该写对象共有的属性,如果是对象自己的,需要放到对象自己名称空间

s1 = Student()
s1.school='北大'  # 改的是对象自己名称空间的属性,改不到类的属性

六、对象的绑定方法

# 函数:普通函数def定义的函数,有几个参数就要传几个参数
# 方法:绑定给某个对象的,方法有特殊之处:绑定给谁,就谁来调用,谁来调用就会自动把谁传过来,传给self

class Student:
    def choose_course(self):  # 定义在类内部的函数,就是绑定给对象的方法
        # print(self.name)  # 通过self来区分,到底是哪个对象调用了自己的绑定方法
        print('%s这个人,选了课'%self.name)

s1=Student()
s1.name='Alex'  # 自己名称空间加了name属性
s1.choose_course() # 绑定给对象的方法,对象来调用,自动把对象传进去
s2=Student()
s2.name='Jenny' # 自己名称空间加了name属性
s2.choose_course()
# print(Student.name)  # 报错

# 类可以不可以调用方法?
# 可以调用,类来调用,就是个普通函数
s1=Student()
s1.name='李四'
Student.choose_course(s1)  
# 类可以调用对象的绑定方法,但是需要手动把对象传进来,
# 现在choose_course就是个普通函数,有几个参数,就传几个参数

七、__init__方法

# 对象在实例化的时候,赋初值(给对象一些属性)
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def choose_course(self):
        print('选课')

# 这种初始化方式会触发类的__init__的执行,并把参数传入
student=Student(name='lqz',age=19)  
print(student.name)

alex=Student(name='egon',age=20)
print(alex.name)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值