pythone:面向對象的基本知識

面向對象:

# 屬性-特徵 
# 方法(函數)-行爲
    # 構造函數-__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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章