一.编程思想
编程思想:面向过程编程、函数式编程、面向对象编程
面向过程编程:算法和逻辑
函数式编程:函数
二.类和对象
1.什么是类,什么是对象
类就是拥有相同属性、相同功能的对象的集合(抽象的)
对象就是类的实例(具体的)
2.类的声明 - 确定这个类共同的属性和功能是什么
1)语法:
class 类名:
类的说明文档
类的内容
2)说明:
class - 关键字
类名 - 要求:标识符,不能是关键字
规范:a.首字母大写,驼峰式命名 b.见名知意 c.不能使用系统提供的函数名或者类名
说明文档 - 和函数说明文档一样
类的内容 - 主要包含属性和方法(声明在类中的函数)
3.声明对象
1)语法
对象 = 类()
class Person:
"""
human:
属性 -
方法 -
"""
def eat(self, food):
print('人吃%s' % food)
def thinking(self):
print('think')
person1 = Person()
person1.eat('饭')
三.对象方法
1.类中的方法
类中的方法分为:对象方法、类方法和静态方法
1)对象方法
a.怎么声明:直接声明在类中的函数就是对象方法
b.特点:自带self参数,通过对象调用对象方法时self不用传参,系统自动将当前对象传给self,self可以做到谁调用就指向谁
c.怎么调用:以'对象.对象方法()'的形式调用
四.构造方法
1.构造函数 - 函数名和类名一样,用来创建类的对象的函数
python中声明类的时候,系统会自动为这个类创建一个构造函数,函数的作用是创建对象
执行过程:
a.在内存中开辟空间创建对象
b.用创建好的对象去调用init方法
c.返回对象在内存中的地址
2.init方法 - 类似回调函数,当满足要求时自动调用
声明在类中用来对对象进行初始化的方法(每当对象被创建时,该方法会自动调用)
注意:创建对象的时候构造方法需不需要传参决定于类中的init方法
class Dog:
def __init__(self, name):
print('初始化!', name)
dog1 = Dog('小白') # print'初始化!'
五.属性
属性就是声明在类中的变量
1.类中的属性 - 分为字段、对象属性
1)字段
a.怎么声明:
声明在类的里面并且在函数的外面的变量
class Person:
num = 10 # num就是字段
def func(self):
pass
b.怎么使用:
通过类去使用(以'类.字段'的形式使用)
c.什么时候用:
属性的值不会因为对象的不同而不同,这样的属性就声明成字段
2)对象属性
a.怎么声明:
以'self.属性名=值'的形式声明在init方法中
class Student:
def __init__(self, name, age, gender, study_id):
self.name = name
self.age = age
self.gender = gender
self.study_id = study_id
student1 = Student('小明', 18, '男', '911')
print(student1.name, student1.age, student1.gender, student1.study_id) # 小明 18 男 911
b.怎么使用:
通过对象去使用('对象.属性名')
c.什么时候用:
属性的值可能会因为对象的不同而不一样,这样的属性就声明成对象属性
# 练习:声明一个Dog类,拥有属性:名字、年龄、性别和类型
# 要求创建对象的时候名字、品种必须赋值,年龄和性别随意
# 拥有两个方法:打印狗的信息、狗叫'XXX:汪汪汪汪'的格式打印叫唤信息
class Dog:
def __init__(self, name, variety, age=3, gender='雄性'):
self.name = name
self.age = age
self.gender = gender
self.variety = variety
def dog_info(self):
return self.name, self.age, self.gender, self.variety
def dog_bark(self):
return '{}:汪汪汪汪!'.format(self.name)
dog1 = Dog('小白', '中华田园犬', 4, '雌性')
print(dog1.dog_info())
print(dog1.dog_bark())
六.对象属性的增删改查
python中类的对象的对象属性支持增删改查
1.查(获取对象属性的值)
1)方法1:
对象.属性名
2)方法2:可以根据需求获取对应的属性
getattr(对象, '属性名')
其他用法:当取不到该属性名时返回默认值
getattr(对象, '属性名', 默认值)
# 例:
value = input('请输入属性名:')
getattr(对象, value)
3)方法3:
对象.getattribute('属性名')
2.增/改 - 当属性存在时修改属性值,不存在时添加该属性
1)方法1:
对象.属性名 = 值
2)方法2:
setattr(对象, 属性名, 值)
3.删
1)方法1:
del 对象.属性名
2)方法2:
delattr(对象, 属性名)
4.slots魔法
通过给slots字段赋值(元组)来约束当前类的对象有哪些对象属性
class Dog:
__slots__ = ('name', 'age') # 只允许对象属性中有'name'、'age'属性
def __init__(self, name, age):
self.name = name
self.age = age