面向过程式编程:
? 好处:出色的完成所有的需求
? 坏处:凡是更改或者增加一条需求,可能整个项目都随之改变
面向对象式编程:
类:具有相似功能和特性的一类事物
对象:类的具体体现
类的优点:
? 类是相似功能特征的集合,可以让代码更清晰,更合理化
? 类是一个公共的模板,对象是从这个模板产出的实体
class 类名: #类名要具有意义,一般使用驼峰体命名
#类的描述
类的变量
类的函数
其中:
类的变量,公认叫做属性(静态属性,静态字段)
类的方法,公认叫做方法(动态方法,动态属性)
例子:
class Student():
""" 构建学生类 """
daily = '学习'
role = '学习技能'
def work(self):
print('每天都要上课')
def study(self):
print('公共课和专业课')
1.查看类的所有内容,使用:类名.__dict__
获取类的全部信息
print(Student.__dict__)
输出内容中类的内置属一些内置属性的含义
__dict__
包含该类的命名空间的字典。__doc__
类的文档描述,可以不定义。__name__
类名,一般使用驼峰体进行命名__module__
定义类的模块名称,值是__main__
2.使用 . 对静态的属性操作
print(Student.daily) #查
Student.daily = '写代码' #改
del Student.role #删
print(Student.__dict__)
3.类名的角度调用类中的方法,一般类中的方法(除去类的方法,静态属性外)不通过类名调用
Student.work(2) #对于动态的方法,一般不采用这种方式调用
对象名 = 类名() 实例化一个对象
class Student:
'''定义学生类'''
daily = '学习'
role = '学习技能'
def __init__(self):
print(self)
print('666')
def work(self):
print('每天都要上课')
def study(self):
print('公共课和专业课')
st1 = Student() #比较st1的地址与self的地址
print(st1)
st2 = Student()
print(st2)
实体化对象时发生的三件事:
__init__
方法,并且将对象空间传给self参数__init__
方法里面的代码,给对象空间封装属性通过 对象名.属性名 对__init__
进行增删改查,就是对对象的属性进行操作
class Student:
'''定义学生类'''
daily = '学习'
mission = '学习技能'
def __init__(self):
self.name = '盖伦'
self.team = '德玛西亚'
def work(self):
print('每天都要上课')
def study(self):
print('公共课和专业课')
st = Student()
print(st.name)
st.role = '战士'
print(st.__dict__) #查看 st 的属性
del st.role
print(st.__dict__)
? 对象只能查看类里的公共属性,无法更改类的属性,这里需要注意的是即使使用 对象名.类里的属性名 进行的操作只是在对象的空间__init__
里添加了与类同名的属性,其实二者存在于不同的内存空间中。
可以在任何位置给对象封装属性,在对象实体化时给在类的相应位置设置实参即可,还可以在类的方法内也可对对象的属性进行操作。
class Student:
'''定义学生类'''
daily = '学习'
mission = '抵御外敌'
def __init__(self,na,te):
self.name = na
self.team = te
def work(self,eq):
self.equip = eq
print(f"{self.name}需要装备{eq},为了{self.mission}") #仔细研究这里属性的调用,非常有意思
def study(self):
print('公共课和专业课')
st = Student('盖伦','召唤师峡谷')
print(st.__dict__)
st.work('日炎铠甲')
print(st.__dict__)
? self就是类中的方法的第一个位置参数,如果通过对象执行类中的方法,解释器就自动的将此对象空间当做实参传给self,其实self最大的作用就是引用当前方法的调用者。
? 浅显的理解就是,在对象内部进行的相互引用或是赋值等操作,就用self,也就是self作为自己的内部相互操作加个名字,不然怎么使用 . 呢。
class Student:
'''定义学生类'''
daily = '学习'
mission = '抵御外敌'
def __init__(self):
self.name = '盖伦'
def work(self): #定义一个work方法
print('现在执行的是work方法')
def study(self): #定义一个study方法,需要借用work的方法
self.work() #使用self参数引用调用work()方法的对象
print('现在运行的是study方法')
s = Student()
s.study()
原文:https://www.cnblogs.com/jjzz1234/p/11138746.html