一.两大编程思想
面向过程:事情比较简单,可以用线性的思维去解决问题。例:c语言。
面向对象:事情比较复杂,使用简单的线性思维无法解决。例:python。
二.面向对象
1.类和对象
类和对象:由无数多个对象抽取出"像"的属性和行为,进而归纳总结出来的一种类别。就比如超市里面的货物有许多总类,我们会在超市里面分类摆放。
拓展:在python中一切都是对象,在pyhon中含有数据类型,在其下面有字符串类型,整数类型,布偶类型等等。这些都是数据类型中的对象。python中用class来表示定义了一个类。
2.类和对象的语法结构
自定义数据类型语法结构
class Dog:# 类属性species = "Canis familiaris"# 初始化方法,用于创建对象时初始化属性def __init__(self, name, age):self.name = name # 实例属性self.age = age # 实例属性# 实例方法def bark(self):return f"{self.name} says Woof!"# 类方法@classmethoddef get_species(cls):return cls.species# 静态方法@staticmethoddef is_mammal():return True
创建对象的语法结构
d = Dog("Buddy", 3)
print(d.name) # 输出: Buddy
print(d.bark()) # 输出: Buddy says Woof!
print(Dog.get_species()) # 输出: Canis familiaris
print(Dog.is_mammal()) # 输出: True
3.类的组成
class Student:# 类属性:定义在类中,方法外的变量school='hellow'# 初始化方法def __init__(self,xm,age): # xm,age是方法的参数,是局部变量,xm,age的作用域是整个__init__方法self.name=xm # 等于左侧实例属性,xm是局部变量,将局部变量的值xm赋值给实例属性self。nameself.age=age # 实例的名称和局部变量的名称可以相同#定义在类中的函数,称为方法,自带一个参数selfdef show(self):print(f'我叫:{self.name},今年:{self.age}岁了')#静态方法@staticmethoddef sm():print('这是一个静态方法,不能调用实例属性,也不能调用实例方法')#类方法@classmethoddef cm(cls):#cls-->class的简写#print(self.name)#self.show()print('这是一个类方法,不能调用实例属性,也不能调用实例方法')#创建类的对象
stu=Student('ysj',18) # 为什么传了两个参数,因为__init__方法中,有两个形参,self是自带的参数,无需手动传入
#实例属性,使用对象名进行打点调用的
print(stu.name,stu.age)
#类属性,直接使用类名,打点调用
print(Student.school)#实例方法,使用对象名进行打点调用
stu.show()#类方法,@classmethod进行修饰的方法,直接使用类名打点调用
Student.cm()#静态方法 @staticmethod进行修饰的方法,直接使用类名大点调用
Student.sm()