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()

在这里插入图片描述在这里插入图片描述

【图片来自网络】


在这里插入图片描述

【图片来自网络】


在这里插入图片描述

【图片来自网络】

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