一、两大范式
支持面向对象的语言中,都有两大范式面向过程和面向对象
1、面向过程:流程化、步骤化思维
优点:
复杂的问题简单化,进而流程化
缺点:
扩展性差,牵一发而动全身
使用场景:对扩展性要求不高的地方,一般使用面向过程
2、面向对象
对象就是盛放数据"属性"和"方法"的结合体
属性:简单理解就是变量
方法:简单理解就是函数,或者叫功能
优点:扩展性强
缺点:编程复杂度变高了
使用场景:一般用在对扩展性要求较高的地方
二、
1、类:就是一系列相同属性和相同方法的结合体
2、必须先定义类,然后调用类产生对象
3、定义类发生的几件事情?
- 类一旦被定义,会立马执行类体代码
- 类一旦定义完成,会产生类的名称空间,它会把类中的名字都丢到类的名称空间去
- 会把类的名称空间绑定给__dict__属性, 查看类的名称空间: 类名.__dict__
4、每调用一次类,都会产生一个对象,并且产生的对象之间是相互独立的,互不影响的
三、
stu = Student('zjz', 18, 'male', 9000), Student为类,stu为具体的实例对象。
其中的初始化方法__init__就是为了构造实例对象而存在
class Student:
# school就是一个属性
school = 'SH' # 属性就是变量
# __init__这个函数名不能改名字,必须叫这个名字,一点都不能差
def __init__(self, name, age, gender, salary):
self.name = name
self.age = age
self.gender = gender
self.salary = salary
# 在类里面定义一个方法出来,为什么叫方法了?本质上就是函数,写在类里面就叫方法
def choose_course(self, course, ):
self["courses"].append(course)
print("%s选择了%s成功,%s" % (self["name"], course, self["courses"]))
stu = Student('zjz', 18, 'male', 9000)
print(stu.name) # zjz
print(stu.age) # 18
print(stu.__dict__) # {'name': 'zjz', 'age': 18, 'gender': 'male', 'salary': 9000}
注⚠️:
1、__init__方法和self:初始化方法,为了构造实例而存在
__init__是一个特殊的方法,用于在创建类的实例时进行初始化操作。它是类的构造函数,会在对象被创建时自动调用。
调用类会自动的触发类里面的__init__方法,然后会把得到的对象本身当成第一个参数自动传递
例如:
class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
# 创建对象并传递参数
obj = MyClass("Alice", 25)
# 访问对象的属性
print(obj.name) # 输出: Alice
print(obj.age) # 输出: 25
在上面的例子中,MyClass类定义了一个__init__方法,该方法接受两个参数name和age。在方法内部,我们使用self.name和self.age来将参数值赋给对象的属性。
当我们创建MyClass的实例obj时,会自动调用__init__方法,并将实例对象obj作为self参数传递给该方法。这样,obj.name和obj.age被赋予了初始值。
__init__方法在对象创建时执行一次,用于初始化对象的状态。你可以在该方法中执行任何必要的操作,例如设置属性的初始值、打开文件、建立数据库连接等。
需要注意的是,__init__方法不返回任何值,它仅用于对象的初始化。如果你想为类定义其他的实例方法,可以在类中定义其他的普通方法,这些方法可以使用self参数来访问对象的属性和方法。
print(stu.__dict__)
四、