面向对象:

# 属性-特征 # 方法(函数)-行为    # 构造函数-__init__() 初始化类的特征

1 类命名

# 首字母大写;单词之间大写连接

2 构造函数(特殊的实例方法)

# 2.1 默认被调用;亦可被主动调用# 2.2 只能返回None,它不是用来返回值的# 2.3 作用:让模板创建不同的对象,初始化对象的特性

3 属性

# 类变量(用'='号赋值!!!) :Students.sum     #规范:通过方法修改类变量# 实例变量# __dict__ 内置函数(同__all__):对象下所有变量的字典

4 方法

# 4.1 实例方法    # self 显胜于隐 相当于this    # 访问类变量 __class__ 指定的类 Student    # 不要操作与对象无关的变量,请用类方法    # 4.2 类方法 @classmethod    # 在函数前加上一个@classmethod 将self改成cls    # 避免逻辑错乱,不要用对象调用类方法    # 可以访问类变量 cls.sum        # 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()