python:面向对象基本知识(一)

1.类

类是现实世界或思维世界的实体在计算机中的反映
它将数据以及这些数据上的操作封装在一起
首字母大写;单词之间大写连接

2.类包含:变量和方法

变量:
    类变量
    实例变量

方法:
    1.实例方法
    2.类方法 @classmethod(装饰器)
        1.特殊的类方法:构造函数 def __init__(self,x,y):
            作用:让模板创建不同的对象,初始化对象的特性
            默认被调用;亦可被主动调用
        2.普通类方法:前面加 @classmethod装饰器

    3.静态方法 @staticmethod

3.方法访问变量

1.实例方法访问实例变量
    def 方法(self,x):
        self.实例变量=x

2.实例方法访问类变量
    self.__class__.类变量=

3.类方法访问类变量
    def plus_sum(cls):
        cls.类变量

4.成员的可见性

1.原则:只允许内部的方法操作变量,避免直接修改数据变量
2.__ 前面加 双下划线 变量变成私有
    def 方法(self,x):
        self.__变量=x
3.在外部调用 self.__变量=x 时,不是访问而是新建一个
4.可通过__dict__查变量字典

5.类方法 @classmethod装饰器

1. 在函数前加上一个@classmethod 将self改成cls
2. 避免逻辑错乱,不要用对象调用类方法
3. 可以访问类变量 cls.sum(实例方法:self.__class__.变量 )
4. 调用:类.类方法() (不建议用对象调用类方法,不合逻辑)

6.静态方法 @staticmethod,不推荐用此方法

# 在函数前加上一个@staticmethod
# 可以同时被 对象、类 调用
# 可以访问类变量 Student.sum,和变量关联性不大的方法时用

案例

class Student():
    #类变量
    sum1=0

    # 构造函数(类方法)
    def __init__(self,name,age):
        #实例变量
        self.name=name
        self.age=age
        #调用类变量
        self.__class__.sum1+=1
        #构造函数默认被调用
        print('学员人数',self.sum1)

    #通过方法对变量进行赋值(不提倡直接访问类变量的方式来修改值)
    def marking(self,score):
        self.__score=score
        print(self.name+'同学的成绩为:'+str(self.__score))

    #通过类方法调用类变量
    @classmethod
    def stu_sum(cls):
        print('学员人数',cls.sum1)

    #实例方法,调用内部实例方法
    def do_homework(self):
        self.do_eng_homework()

    #实例方法
    def do_eng_homework(self):
        print(self.name,'do eng homework')


student1=Student('小明',21)
student2=Student('小明2',21)
student3=Student('小明3',21)

student1.do_homework()
Student.stu_sum()
student1.marking(90)

# 偷偷调用私有变量的方法
#print(student1.__dict__) #->{'name': '小明', 'age': 21, '_Student__score': 90}
#print(student1._Student__score)

相关推荐