Python從零開始學 Day05~面向對象

Python從零開始學 Day05~面向對象

本文是上一篇文章的後續,詳情點擊該鏈接

類的定義和調用

class student:
    #構造方法
    def __init__(self,name,score):
        self.name = name
        self.score = score
    def data(self):
        print("姓名: ",self.name," 年齡: ",self.score)

s = student('劉伯溫',19)

s.data()

在這裏插入圖片描述

        self好比C++,Java裏面的this

其他操作:

        dir(obj)可以獲得對象的所有屬性、方法

        obj.__dict__ 對象的屬性字典

        pass 空語句

        isinstance(對象,類型) 判斷“對象”是不是“指定類型”

靜態方法

        “靜態方法”和在模塊中定義普通函數沒有區別,只不過“靜態方法”放到了“類的名字空間裏面”,需要通過“類調用”。

@staticmethod

class student:
    #構造方法
    def __init__(self,name,score):
        self.name = name
        self.score = score

    def data(self):
        print("姓名: ",self.name," 年齡: ",self.score)

    @staticmethod
    def show():
        print("hello 我是靜態方法")

s = student('劉伯溫',19)
s.data()

student.show()

在這裏插入圖片描述

析構函數

        和C++裏面的析構函數差不多

class student:
    def __init__(self):
        print("我是構造函數~")

    def __del__(self):
        print("我是析構函數~")

print("程序運行中")
s = student()
i = input("隨便輸入")

在這裏插入圖片描述
在這裏插入圖片描述

__call__方法和可調用對象(計算工資案例)

class SalaryAccount:
    def __call__(self, salary):
        yearSalary = salary * 12
        daySalary = salary // 30
        hourSalary = daySalary // 8
        return dict(monthSalary=salary,yearSalary=yearSalary,daySalary=daySalary ,hourSalary=hourSalary)
s = SalaryAccount()
print(s(3000))

在這裏插入圖片描述

方法的動態性

class User:
    def fun(self):
        print("我要去運動")

def funS():
    print("我要喫大餐")
User.fun = funS()
u = User()
u.fun

在這裏插入圖片描述

方法的私有公有性

        通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他爲公有的(public)。

class Student:
    def show(self): #公有方法
        print("我是公有方法")

    def __li(self): #私有方法
        print("我是私有方法")
S = Student()
S.show()

@property裝飾器

@property 可以將一個方法的調用方式發成“屬性調用”

class Student:
    @property
    def number(self):
        return 6666
s = Student()
print(s.number)

Get,Set方法

class Student:
    def __init__(self,score):
        self.score = score
    def __init__(self):
        pass

    @property
    def score(self):        #如同get
        return self.score

    def score(self,score):  #如同set
        self.score = score

s = Student()
s.score(7)
print(s.score)

繼承

class Animal:
    def ani(self):
        print("這是個動物")
class Cat(Animal):
    def ca(self):
        print("我是個貓咪")
C = Cat()
C.ani()

在這裏插入圖片描述

object根類

dir()查看對象屬性

class Student:
    def __init__(self,score):
        self.score = score
    def show(self):
        print("學生成績是: ",self.score)
obj = object()
print(dir(obj))

S = Student(19)
print(dir(S))

在這裏插入圖片描述

多重繼承

class Cat:
    def catrun(self):
        print("小貓在跑")
class Dog:
    def dogrun(self):
        print("小狗在跑")
class Animal(Cat,Dog):
    def __init__(self):
        print("都是動物")
        super().catrun()#super獲得類方法

A = Animal()
A.dogrun()
A.catrun()

在這裏插入圖片描述在這裏插入圖片描述

【圖片來自網絡】


在這裏插入圖片描述

【圖片來自網絡】


在這裏插入圖片描述

【圖片來自網絡】

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