模塊一 第二週 作業一 統計學生人數

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章