五、类
1、什么是类
在 python 中所有类型的数据都可以看成对象, 包括我们我们以前学习的所有的内置类型
int
,float
等.
像这些
int
,float
,list
这些数据类型, 就是我们面向对象中的类我们可以根据需要自定义很多类型出来, 这些自定义的类型也是我们面向对象中的类
2、分类
python3中统一都是新式类, pyhon2中才分新式类与经典类
- 经典类
- 新式类
3、自定义类的组成
4、语法
经典类格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23class 类名:
#静态字段
属性=值
#私有静态字段(外部无法访问)
_属性=值
#私有静态字段且子类无法覆盖
__属性=值
def __init__(self,参数1,参数2,...):
""""初始化方法(构造方法)"""
#普通字段
self.字段 = 参数1
self.字段 = 参数2
def 方法名(self,参数1,参数2,...):
'''无返回值的方法'''
def 方法名(self,参数1,参数2,...):
'''有返回值的方法'''
retrun 返回值
def 属性名(self):
return obj新式类格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15class 类名(object):
#静态变量
属性=值
#私有变量
_属性=值
#用来避免子类覆盖其内容
__属性=值
def __init__(self,参数1,参数2,...):
""""初始化方法(构造方法)"""
self.变量名 = 参数1
self.变量名 = 参数2
def 方法名(self,参数1,参数2,...):
pass
5、举个栗子
栗子1
1
2
3
4
5
6
7
8
9
10
11
12
13
14class Person():
def __init__(self, name):
self.name = name
def say(self):
print(self.name + ":在说话")
def run(self):
print(self.name + ':带着小姨子跑路了')
if __name__ == '__main__':
person = Person('小明')
print(person.name)
person.say()
person.run()说明
内存分析图
执行步骤
1、将类加载进内存
2、将类变量加载进类的内存
3、将__init__方法的地址加载进类的内存
4、将普通方法方法的地址加载进类的内存
5、实例化对象分配对象内存地址
6、将实例变量初始化加载进对象内存
self:
在实例化时自动将对象/实例本身传给
__init__
的第一个参数,你也可以给他起个别的名字,但是正常人都不会这么做。
因为你瞎改别人就不认识
作业
Employee
- 需求:定义一个员工类Employee
- 自己分析出几个成员,然后给出成员变量
- 姓名name,工号id,工资salary
- 以及一个显示所有成员信息的方法。并测试。
- work
定义商品类
需求:定义个商品类 ShopInfo
自己分析出几个成员,然后给出成员变量
- 商品shop_id, 商品名称 name,当前价格 price(商品价格价格大于0),
在控制台显示所有的商品信息