模块一 第二周 作业一 统计学生人数

1 问题描述

为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加:

class Student(object):
    count = 0
    def __init__(self, name):
        self.name = name
        Student.count += 1

stu1 = Student('小刚', 18)

2 解题提示

本题主要是对类实例,类属性,类方法的认识

  1. 参考本模块第一节 类和实例、访问限制、属性和方法、成员属性和类属性
  2. 定义一个变量用来计数,每添加一个实例,就让这个变量 +1
  3. 查看这个属性(类名.属性名)

3 评分标准

  1. 本题共计30分
  2. 实现count数的增加20分
  3. 代码注释、规范10分

4 要点解析

4.1 命名规则

# # 类名的书写规范,建议使用驼峰命名法
# 大驼峰:MyCar XiaoMi
class MyCart():
    pass
# 小驼峰:myCar xiaoMi
class myCart():
    pass
    
# # 如果只是用一个词来命名,首字母要大写
class Cart():
    pass

4.2 面向对象、面向过程

面向对象编程——Object Oriented Programming,简称OOP,是一种以对象为中心的程序设计思想。

面向过程编程——Procedure Oriented Programming,简称POP,是一种以过程为中心的程序设计思想。

  • 面向对象

分析问题中需要的抽象模型,然后将需要的功能分别去创建模型对象,最终由模型对象来完成程序

优缺点:

  • 优点:可扩展性高

  • 缺点:编程复杂度相对面向过程高一些。指的是计算机在执行面向对象的程序时的性能表现

  • 面向过程

分析解决问题的步骤,然后一步步去实现

优缺点:

  • 优点: 将负责的问题流程化,进而实现简答化
  • 缺点:扩展性差(更新,维护,迭代)

4.3 类

类 :对一类事物的描述,是抽象的、概念上的定义。

# 创建类,类主要由类名,属性,方法组成,当然创建一个类时,属性和方法可以选择的。
class Person:
    count = 1
    def speak(self):  
        print("I can speak")
 
# 创建对象
tom =Person()  #创建对象,直接类名()
tom.speak()

4.4 类属性,实例属性

  • 定义的位置不同,类属性直接定义在类中,对象属性定义在构造函数中
  • 访问方式不同,类属性使用类名直接访问,对象属性使用对象访问
class Student(object):
    #类属性直接定义在类中
    count = 0
    def __init__(self,name):
        #实例【对象】属性定义在构造函数中
        self.name = name

# 查看类属性
print(Student.count)

# 创建实例【对象】
xm = Student('小明')
# 通过创建的对象来访问对象属性
print(xm.name)

4.5 self

  • self只有在类的方法中才会有,独立的函数或方法是不必带有self的。

  • self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

  • self指的是类实例对象本身,不是类本身。

4.6 有object与无object

在python2中,class(object)定义时,class继承了object()的属性;

在python3中,class()默认继承了object()

在这里插入图片描述

class A:
    """
    不带object
    """
    name = "zhengtong"
 
class B(object):
    """
    带有object
    """
    name = "chonghong"
 
if __name__ == "__main__":
    a = Person()
    print("A", dir(a))
 
    b = B()
    print("B", dir(b))

5 代码实现

# 创建一个学生类
class Student(object):
    #类属性直接定义在类中
    count = 0
    def __init__(self,name):
        # 实例【对象】属性定义在构造函数中
        self.name = name
        # 每次创建一个对象,类属性的count+1
        Student.count += 1

# 查看类属性
print(Student.count)

# 创建实例【对象】
xm = Student('小明')
# 通过创建的对象来访问对象属性
print(xm.name)

# 创建一个对象之后,再次查看类属性
print(Student.count)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章