python 面向对象-初识
一、分类
1、面向过程
2、面向函数
3、面向对象
二、类和对象
1、宏关
类是抽象的,对象是具体的
2、实例化
类->对象
3、类的作用
1)实例化成对象
实例化的过程,创建self对象,调用__init__()方法,获取返回值
2)调用静态属性
4、对象的作用
1)调用函数
2)查看属性
5、补充
1)类和属性都有__dict__
2)self可以看成字典(不严谨)
3)初始化的__init__和方法的形参必须有self
4)类的名字首字母大写
5)类的关键字class
# 计算长方形的周长、面积 square perimeter area class Square: # 定义类 def __init__(self, wide, height): # 初始化 self.wide = wide self.height = height def per(self): # 周长方法 return (self.height + self.wide) * 2 def area(self): # 面积方法 return self.wide * self .height s1 = Square(2, 4) # 实例化 p1 = s1.per() # 对象调用方法 a1 = s1.area() print(p1, a1)
class Person: country = 'China' # 静态属性/类属性 def __init__(self, name, sex, age): # 初始化 self.name = name self.sex = sex self.age = age def hobby(self, hob): print('大叫好,俺叫%s,我是%s生,我今年%d岁,我喜欢%s' % (self.name, self.sex, self.age, hob)) person = Person('张飞', '男', 24) # 实例化 person.hobby('女人') print(Person.country) Person.hobby(person, '女人') # Person.hobby(person, '女人') 通过类调用方法,一般不这么写,与person.hobby('女人') 效果用于 """" 大叫好,俺叫张飞,我是男生,我今年24岁,我喜欢女人 China 大叫好,俺叫张飞,我是男生,我今年24岁,我喜欢女人 """
三、 命名空间
1、类的命名空间
定义:创建一个类就会创建一个类的命名空间
作用:储存属性
2、属性分类
静态属性:类里面定义的变量
动态属性:类里面定义的方法
类命名空间的属性是共享对象的
3、对象的命令空间
类->对象,实例化,创建对象的命名空间,是__init__里的属性
对象调用属性的过程:
先从对象命名空间里找,找不到,到类命名空间找,找不到,就不会在找,抛出异常
4、绑定方法
对象/实例.方法名
四、组合用法
定义:一个类的对象作为另一个类的数据属性
class Birthday: def __init__(self, month, day): self.month = month self.day = day class Teacher: def __init__(self, name, age, birth): self.name = name self.age = age self.birth = birth b1 = Birthday(11, 10) te = Teacher('tom', 22, b1) # b1是Birthday类的对象,作为Teacher类的数据属性 print(te.birth.month)