1、变量
变量: - 实例变量(字段) - 公有实例变量(字段) - 私有实例变量(字段) - 类变量(静态字段) - 公有类变量(静态字段) - 私有类变量(静态字段)
实例一:
class Foo: # 类变量(静态字段) country = "中国" def __init__(self, name): # 实例变量(字段) self.name = name def func(self): pass obj1 = Foo('季红') obj2 = Foo('王晓东') Foo.country
2、方法
实例方法 class Foo(object): def __init__(self, name): self.name = name # 实例方法 def func(self): print(self.name) obj = Foo('..') obj.func() - 静态方法 class Foo(object): def __init__(self, name): self.name = name # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法 @staticmethod def display(a1, a2): return a1 + a2 Foo.display(1, 3) - 类方法 class Foo(object): # 类方法,cls是类 @classmethod def show(cls, x1, x2): print(cls, x1, x2) # 执行类方法 Foo.show(1, 8)
总结
# ############### 静态方法 ############## # 1. 编写时: # - 方法上方写 @staticmethod # - 方法参数可有可无 # 2. 调用时: # - 类.方法名() * # - 对象.方法名() # 3. 什么时写静态方法? # - 无需调用对象中已封装的值. # ############### 类方法 ############## # 1. 定义时: # - 方法上方写: @classmethod # - 方法的参数: 至少有一个cls参数 # 2. 执行时: # - 类名.方法名() # 默认会将当前类传到参数中. # 3. 什么时用? # - 如果在方法中会使用到当前类,那么就可以使用类方法.
3、属性
总结: 1. 编写时 - 方法上方写 @property - 方法参数:只有一个self 2. 调用时:无需加括号 对象.方法 3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property
4、嵌套
面向对象: """ 创建三个学校且三个学校的设施内容等都是一致. """ class School(object): def __init__(self, name, address): self.name = name self.address = address def speech(self): print('讲课') obj1 = School('老男孩北京校区', '美丽富饶的沙河') obj2 = School('老男孩上海校区', '浦东新区') obj3 = School('老男孩深圳校区', '南山区') class Teacher(object): def __init__(self, name, age, salary): self.name = name self.age = age self.__salary = salary self.school = None t1 = Teacher('李杰', 19, 188888) t2 = Teacher('艳涛', 18, 60) t3 = Teacher('女神', 16, 900000) # ############## 老师分配校区 t1.school = obj1 t2.school = obj1 t3.school = obj2 # #################################### # 查看t1老师,所在的校区名称/地址 print(t1.school.name) print(t1.school.address) print(t1.name) print(t1.age) t1.school.speech() 准则: 字段和方法的归类. 以前: [ {"name": 'alex1', 'age': 18, xxx: 999}, {"name": 'alex2', age':18}, ]