python: 面向对象的基本知识点
面向对象:
- # 类是现实世界或思维世界的实体在计算机中的反映
- # 它将数据以及这些数据上的操作封装在一起
- # 属性 - 特征
- # 方法 (函数)- 行为
- # 构造函数 -__init__() 初始化类的特征
构造函数是自动被调用的, 也可显式调用, 但不能定义 return 值, 只能返回 None(一般不用)
作用: 初始化类的特征值, 让对象之间变的不同
1 类命名
# 首字母大写; 单词之间大写连接
2 构造函数 (特殊的实例方法)
- # 2.1 默认被调用; 亦可被主动调用
- # 2.2 只能返回 None, 它不是用来返回值的
- # 2.3 作用: 让模板创建不同的对象, 初始化对象的特性
3 属性
- # 类变量 (用'='号赋值!!!) :Students.sum
- #规范: 通过方法修改类变量
- # self.__class__. 变量 访问类变量
- # 实例变量
- # self. 变量 定义实例变量
- # __dict__ 内置函数 (同__all__, 定义 import * 的范围): 对象下所有变量的字典
- # dict 需在实例中调用, 在类中不准确.
4 方法
- # 4.1 实例方法
- # self 显胜于隐 相当于 this, 只和实例对象有关, 和类无关
- #访问实例变量, 要加 self
- # 访问类变量 __class__ 指定的类 Student
- # 不要操作与对象无关的变量, 请用类方法
- # 4.2 类方法 @classmethod 装饰器
- # 在函数前加上一个 @classmethod 将 self 改成 cls
- # 避免逻辑错乱, 不要用对象调用类方法
- # 可以访问类变量 cls.sum(实例方法: self.__class__. 变量 )
- # 调用: 类. 类方法 () (不建议用对象调用类方法, 不合逻辑)
- # 4.3 静态方法 @staticmethod, 不推荐用此方法
- # 在函数前加上一个 @staticmethod
- # 可以同时被 对象, 类 调用
- # 可以访问类变量 Student.sum, 和变量关联性不大的方法时用
5 成员的可见性
- # 只允许内部的方法操作变量, 避免直接修改数据变量
- # __ 前面加 双下划线 变量变成私有
6 继承性
- # 建议一个类单独成一个文件
- # super 指代父类 Python3.x 和 2.x 的一个区别是: 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx
- # 子类调用父类 属性, 方法 时, 优先使用 super()
案例:
- class Student():
- sum=0
- def __init__(self,name1,age):
- self.name=name1
- self.age=age
- self.__score=0
- print(self.name)
- #在实例方法中不要操作与对象无关的变量, 请用类方法
- #self.__class__.sum+=1
- #print((self.__class__.sum))
- #2.2 return '只能返回 None'
- @classmethod
- def plus_sum(cls):
- cls.sum+=1
- print('我们班有:',cls.sum)
- @staticmethod
- def add(x,y):
- print('This is a static method')
- def do_homework(self):
- print('写作业')
- def marking(self,score):
- self.__score=score
- print(self.name+'同学本次成绩是'+str(self.__score))
- class people
- # 实例化
- s1=Student('石敢当',20)
- r1=s1.marking(98)
- Student.plus_sum()
- s1=Student('石当 2',22)
- Student.plus_sum()
- #2.1 很少调用构造函数, 只是证明可用
- #a=s1.__init__()
- # print(a)
- # print(type(a))
- #print(s1.name)
- #print(s1.__dict__)
- #print(Student.__dict__)
- s1.do_homework()
来源: http://www.bubuko.com/infodetail-3198787.html