基于面向对象编程的思想编写程序,就好比是在创造一个世界,你就是这个世界的上帝,是一种上帝式的思维方式。
- 优点:可扩展性强
- 缺点:编程的复杂度要高于面向过程
一、类和对象
只要是面向对象的编程语言都有类和对象。那什么是类和对象呢?
1.1 什么是类和对象
类:种类、类别。
- 类:一系列共同的属性和方法
对象:类的具体实例化
- 对象:属性和方法的结合体
现实生活中:先有对象再有类
程序中:先有类再有对象
1.2 定义类
定义类(类名建议用驼峰命名)class关键字 类名:
class Student:
#变量表示属性
school='xxx'
def choose(self):
print("选课....")
def study(self):
print('学习'
1.3 生成对象
类加括号,生成对象 对象=类名()
stu1=Student()
通过,获取属性和方法 通过 . 获取
print(stu1.school)
print(stu1.choose)
二、类
1 获取类的属性和方法
- 查看类的所有属性和方法可以通过
类.__dict__
#查看类中的属性和方法
print(Student.__dict__)
print(Student.__dict__['school']) # 查看类中属性
print(Student.__dict__['choose']) # 查看类中方法的内存地址
Student.__dict__['choose'](123) # 调用类中方法
{'module': 'main', 'school': 'oldboy', 'choose': <function Student.choose at 0x000001FAC00ADEA0>, 'study': <function Student.study at 0x000001FACEFE28C8>, 'dict': <attribute 'dict' of 'Student' objects>, 'weakref': <attribute 'weakref' of 'Student' objects>, 'doc': None}
xxx
<function Student.choose at 0x000001FAC00ADEA0>
选课....
2 类来调用属性和方法
- 通过dict来取(复杂,不用)
- 类名.属性/函数
三、对象
1 对象获取属性和方法
- 查看对象的所有属性和方法可以通过
对象.__dict__
stu1=Student()
print(stu1.__dict__)
print(stu1.school)
{}
xxx
2 对象来调用属性和方法
- 对象调用内部属性和方法,第一个参数不用传
对象.属性/方法
class Student:
#变量表示属性
school='xxx'
def choose(self):
print("选课....")
def study(self):
print('学习')
#对象来调用方法,第一个参数不用传
stu2=Student()
print(stu2.school)
print(stu2.choose)
xxx
<bound method Student.choose of <main.Student object at 0x00000189178C0B00>>
补充:方法和函数
方法是类的所属方法。是类的绑定方法
函数是单独定义的函数。