python之面向对象

Python中一切皆对象

对象

数据与功能的结合体。

多个对象相同数据与功能的结合体。

PS:在程序中需要先定义类,之后才能产生对象。

 

定义类

class Student:
    # 相同的数据
    school = '清华大学'
    # 相同的功能
    def choose_course(self):
        print('选课')

 

定义类的语法结构

class

定义类的关键字。

Student

类的名字:类名在python中推荐首字母大写。

缩进代码块

对象相同的数据与功能。

PS:在类中定义的函数称之为“方法”。

 

产生对象

就是类名加括号(实例化)

obj1 = Student()  # 每次都会产生一个新的对象
obj2 = Student()
obj3 = Student()
print(id(obj1), id(obj2), id(obj3))

 

访问数据和功能

查看内部具有的属性和方法

print(Student.__dict__)
print(obj1.__dict__)
print(obj2.__dict__)
print(obj3.__dict__)

 

调用属性和方法(句点符)

print(obj1.school)
print(obj2.school)
print(obj3.school)
print(obj1.choose_course()) print(obj2.choose_course()) print(obj3.choose_course())

 

独有的数据

定义类

class Student:
    school = '软饭学院'
    # 让对象具有独有的数据
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
    # 绑定给对象的方法(绑定方法):对象来调用自动将对象当作参数传入
    def choose_course(self):
        print('%s正在选课' % self.name)

 

产生对象:类名加括号(实例化)

obj1 = Student('jason', 18, 'male')  # 每次都会产生一个新的对象
obj2 = Student('kevin', 28, 'male')
obj3 = Student('tony', 38, 'female')
obj1.choose_course() obj2.choose_course() obj3.choose_course()

 

self相关

为什么调用的时候形参self不需要传值

对象在调用类里面定义的方法的时候,就会自动将对象本身当成第一个位置参数传入。

形参self到底是什么?

self指代的就是一个个对象。

print(obj1.name)
obj1.name = 'jasonNB'
print(obj1.name)
obj1.xxx = 'ooo'
print(obj1.xxx)

 

核心补充

父类

多个类相同的数据和功能的结合体。

继承

一个类可以继承多个父类并拥有多个父类里的东西。

 

对象查找数据和方法的顺序

先从对象自身开始找,再去对象的类里面找,然后再到父类里去找。

 

 

异常捕获

异常分类

语法错误

不被允许的,出现了应该立刻修改。

逻辑错误

可以允许发生的,也就是常说的BUG。

 

语法结构

try:
    被检测的代码
except 错误类型 as 变量名:
    分支代码(变量名指代的就是错误的具体信息)
# 万能异常Exception/BaseExceptions 

 

使用规则

1.异常在程序中尽量少用。

2.try检测的代码要尽量的少。

 

其他关键字

else

try检测的代码没有异常的情况下会走。

 

finally

无论是否有异常最终都会执行。

 

posted @ 2021-08-31 16:02  wddwyw  阅读(44)  评论(0编辑  收藏  举报