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)
相關文章
相關標籤/搜索