3/16课后总结
面向过程概念
# python中两大范式:1面向对象,2面向过程
# 这俩都只是编程思想
"""
面向过程重在过程二字,先做什么,在做什么,一步一步的来,机械式思维
生活中:比如上厕所,首先得脱裤子,蹲下,解决战斗,擦干净,站起来,提裤子,就得按照步骤一步步来,跳过任何一步都会有问题。
优点:复杂的问题简单化,进而流程化
缺点:扩展性差
使用场景:通常是对扩展性要求不高的地方
"""
面向对象概念
"""
面向对象重点就是对象二字
在python中一切皆对象
在程序中:
对象就是存放“属性”和“方法”的地方
在生活中:
对象就是“特征”和“能力”
"""
类的定义和对象的产生
# 类:存放“属性”和“方法”的地方
"""
在程序中,先有类,将类实例化后产生对象
在生活中,先有对象才有类
"""
# 定义类
class Dog: # class就是声明一个类,Dog是类名
pass
# 类名遵循变量的命名规范,首字母一般大写,如果存在多个单词,采用大驼峰的形式
class Dog:
animal = 'dog' # 类的属性
def __init__(self, name): # 类的构造方法,实例化类时自动调用
self.name = name
def say_hi(self): # 函数写在类里面就叫方法
print('汪汪汪')
"""
定义类就会立马执行类体代码
产生类的名称空间,并把类的属性和方法名字放进去
把类的名称空间绑定给__dict__,类名.__dict__
"""
print(Dog.__dict__) # 查看类的名称空间
dahuang = Dog('dahuang') # 实例化类产生对象
maoyue = Dog('maoyue')
print(maoyue.__dict__) # 对象的名称空间
定制对象自己独有的属性
class Dog:
animal = 'dog' # 类自己独有的属性
def __init__(self, name): # 类的构造方法,实例化类时自动调用
self.name = name
def say_hi(self): # 函数写在类里面就叫方法
print('汪汪汪')
maoyue = Dog('毛跃')
"""
类在实例化时,会将maoyue也就是对象自己传入类中的self,然后括号中写的就是传入构造方法中的实参
上面的animal和后面定义的name,都是类的属性,一般多个对象都带有animal这个属性时,就可以不将其写在构造方法里,而是直接给其一个值,后面实例化的对象都会带有这个属性
如:print(maoyue.animal) # 打印的结果是dog
"""
属性的查找顺序
class Dog:
animal = 'dog'
def __init__(self, name):
self.name = name
def say_hi(self):
print('汪汪汪')
print(Dog.animal) # 查找类属性
Dog.age = 18
print(Dog.__dict__) # 增加类属性
Dog.animal = 'cat'
print(Dog.__dict__) # 类属性的修改
del Dog.age
print(Dog.__dict__) # 删除类属性
dog1 = Dog(1)
print(dog1.__dict__) # 查看对象属性
查看
print(dog1.__dict__['name'])
print(dog1.name)
print(dog1.__dict__['animal']) # 只能从对象自己的属性里面去查找,没有则直接报错
'''对象的属性查找,先从自己对象属性里面去找,如果找到了,直接返回,如果找不到,在去产生这个对象的类中取查找'''
print(dog1.animl)
# 增删改,如类