“”" 面向过程编程:-一遇到问题马上想到的是怎么写代码吧这个功能实现 函数式编程:-一遇到问题马上想到有没有一个函数已经吧这个功能实现了,如果有就用,没有就定义一个这个功能的函数 面向对象编程:-一遇到问题马上想到有没有一个类中有这个方法能够吧整个功能实现,如果没有就创建这个类 “”"
“”" 类就是拥有相同属性和相同功能的对象的集合 对象就是类的实例
从生活的角度: 如果人是类,余婷就是对象,骆老师是另一个对象 如果杯子是类,茶杯就是对象,桌上的杯子 “”"
“”" 语法 class 类名: 类的说明文档 累的内容(包含属性和方法) 说明: class -关键字 类名 - 程序员自己命名 要求:标识符,不能是关键字 规范:驼峰式命名,首字母大写;见名知义;不适用系统的函数名、类名、模块名 类的说明文档 - 用"""""“引起了的说明性文字,主要说清楚类提供了哪些属性和哪些功能 类的内容 - 主要包含属性和方法(定义在类中的函数就方法) “”” PEP8命名规范
student_name='张三'驼峰式命名
studentName='李四'定义一个人类
class Person: """人类""" def eat(self): print('人类在吃饭') def sleep(self): print('人类在睡觉!') class Servant: """佣人类""" def wash(self): print('洗衣服') def cook(self,food): print(f'做{food}')“”" 语法: 类名()
说明: 类名 - 是已经定义好的类的类名 “”"
p1=Person() #创建人类的对象p1 p2=Person() print(p1) print(p2) s1=Servant() #创建佣人类的对象s1 print(s1) s1.cook('饭')“”" 类中的方法:对象方法、类方法、静态方法
怎么定义:直接定义在类中函数就是对象方法 特点:自带参数self(self 在通过对象调用时候不用传参,系统会自动将当前对象穿给self) 怎么调用:用对象去调用(对象.方法名())
怎么定义:定义函数前加装饰器:@classmethod 特点:自带参数cls(cls在通过类调用的时候不用传参,系统会自动将当前类传给cls) 怎么调用:用类调用(类.方法名())
怎么定义:定义函数前加装饰器:@staticmethod 特点:没有默认参数 怎么调用:用类调用
如果实现函数的功能需要用到对象的属性,就选对象方法 “”"
class Dog: # eat是对象方法 def eat(self): print('狗啃骨头') # count是类方法 @classmethod def count(cls): dog2=Dog dog3=cls() print(dog2,dog3) print('狗的数量是:100') @staticmethod def func2(): print('静态方法') # 创建对象 dog1=Dog() # 用对象调用对象方法 dog1.eat() # 用类调用类方法 Dog.count() Dog.func2() print('=================注意=============') # 从本质上讲,类型的所有的方法都可以用对象和类调用,但是不能这么做 Dog.eat(12) # 如果用类调用对象方法,self就会变成不同的参数,没有存在的价值 Dog.count() dog1=Dog() dog1.count()# 用对象调用类方法的时候cls指向的还是类(不会指向对象)“”" 构造方法:函数名和类名是一样的,用来创建对象的方法就是构造方法(python中的构造方法,在定义类的时候系统自动创建)
“”"
“”" __init__方法又叫初始化方法,用来在创建对象的是对对象进行初始化操作的 当我们通过类创建对象的时候,系统会自动调用__init__方法来对创建出来的对象进行初始化
调用构造方法创建对象的时候需不需要参数,需要几个,看呗自动调用__init__ “”"
class Person: def __init__(self,a,b): print('初始化方法',a,b) P1=Person(10,20) """ def Person(*args,**kwargs): 对象-申请空间创建对象 对象.__init__(*args,**kwargs) return 对象 """“”" 对象属性:对象属性的值会因为对象不同而不一样 1.定义在init方法中 2.以self.属性名=值 3.通过对象.属性名的方式使用属性 “”"
class Person: def __init__(self,name,age): self.name=name self.age=age p1=Person('王哥',18) print(p1.name,p1.age)