Python学习(六)

一、对象基本知识

1、dir内置函数

使用:
dir(变量名)
作用:查看变量对象内所有属性和方法,其中__方法名__表示的是python内置的方法和属性。

2、简单类的定义

方法:直接按照普通函数定义就可以
属性:需要在内置构造函数__init__中对属性进行定义
注意点
(1)、在方法中self参数是不能少的,self是调用该方法的对象的引用
(2)、初始化方法 __init__ 在对象创建的时候会自动调用,该方法是专门用来定义一个类具有哪些属性的。当对象初始化的时候会先分配空间,然后调用该方法对对象进行初始化。
定义属性:self.属性名=属性值
(3)、__del__方法:当对象从内存中销毁的时候会调用该方法

(4)、如果使用print函数直接输出对象,那么得到的是对象的十六进制的地址和类,如果要得到对象的具体内容可以重新写函数__str__
但是,该函数必须返回一个字符串,也就是必须return,且必须是字符串

注意:在类中的所有方法中self参数是不能省略的。

类定义的例子

#例子一
class Person:
    def __init__(self,n,w):
        self.name = n
        self.weight = w
     
    def __str__(self):
    #返回的必须是字符串
        return ("%s的体重是%.1f"%(self.name,self.weight))
    def run(self):
        self.weight -= 0.5
    def eat(self):
        self.weight += 1

a = Person("小明",75.0)
a.eat()
a.run()
print(a)


#例子二
class HouseItem:
    def __init__(self,n,a):
        self.name = n
        self.area = a
    def __str__(self):
        return "家具%s的面积是%.1f"%(self.name,self.area)


class House:
    def __init__(self,t,ta,la):
        self.type = t
        self.tarea = ta
        self.larea = la
        self.item_list = []

    def __str__(self):
        cnt = len(self.item_list)
        s_list = ""
        if not cnt==0:
            for i in self.item_list:
                s_list += i.name+"\n"
        else:
            s_list = "现在还没有任何家具!"
        return "户型:%s\n总面积:%.1f\n剩余面积:%.1f\n家具列表:%s" %(self.type,self.tarea,self.larea,s_list)

    def add_item(self,item):
        self.item_list.append(item)
        self.larea -= item.area
        

house = House("复式楼",10,10)
print(house)
print("\n")
bed = HouseItem("席梦思",4)
print(bed)
print("\n")
chest = HouseItem("衣柜",2)
print(chest)
print("\n")
table = HouseItem("餐桌",1.5)
print(table)   
print("\n")
house.add_item(bed)
print(house)
print("\n")
house.add_item(chest)
print(house)
print("\n")
house.add_item(table)
print(house)

注意注意:可以直接使用对象名.属性名的方式为对象增加属性,但是这种方式尽量少用,但是可以这样操作。

3、None

None:当定义对象的属性的时候,目前还不知道对象该属性的具体取值的时候,就可以将该值设置为None。

is方法
在这里插入图片描述
而==比较的是值是否相等。
此外,需要注意的是,我们一般在判断对象的某初始值为None的属性是否被赋值过的时候,应该使用is Node来判断,虽然 ==None也是可以的,但是推荐使用is的判断方法。

4、私有属性和私有方法

在属性和方法前面加上两个下划线“__”就可以。
但是在Python中没有严格的私有属性和方法,通过使用_类名(只有一个下划线)私有属性(私有方法)就可以访问,这是因为Python就是这样处理私有属性和私有方法的:

__名称=》_类名__名称

二、类的继承

1、语法

在Python3中如果没有指定类的父类,会将object作为默认的父类,但是Python2不会,所以当没有指定的父类的回收,最好还是将父类指定为object。

#继承
class 类名(父类名):
pass
#当没有具体的父类的时候,最好将object作为父类
class 类名(object):
pass

2、父类方法的重写

在这里插入图片描述

3、父类的私有属性和私有方法

在这里插入图片描述

4、多继承

在Python中支持多继承,也就是有多个父类,语法:

class name(parent1,parent2……):
pass

多继承涉及的一个问题是当两个父类有同名的方法的时候,子类到底调用的是哪一个,这取决于该类的方法查找顺序,可以使用MRO函数进行查看。
但是当两个类有同名的函数的时候应当尽量避免同时继承这两个类。
在这里插入图片描述

5、多态

在这里插入图片描述Python中的多态的关键是继承和重写父类的方法
毕竟Python在申明变量的时候也不像C一样要申明类型,所以其多态也就不太像C。

三、类也是对象

在Python中所有的都是对象,因此类也是对象,但是是特殊的对象,该对象有以下的特点:
(1)、在Python运行的时候,类同样会被加载到内存
(2)、在程序运行时,类对象在内存中只有一份,使用一个可以创建出多个对象实例
(3)、除了封装实例的属性和方法之外,类也可以有自己的属性和方法
(4)、通过类名.的方式可以访问类的属性和方法
类的方法属性和实例的属性和方法在内存中的示例:
具体实例的属性是存在各实例的内存中,其方法则是存在类的内存中,只是将各实例的引用当做参数传递过去

1、类属性

类属性一般记录的是与该类有关的特征,与具体的实例无关。
定义的方式:直接在类中使用赋值语句

属性的获取机制:类属性可以用类名进行访问,也可以用对象名进行访问,所以当使用对象名进行访问的时候,会首先在对象自身查找,如果没有再去找类属性。
注意如果使用对象.类属性 = 值的赋值语句,那么并不会对类属性造成影响,而是会为对象新增一个属性

2、类方法

语法

@classmethod
def 类方法名(cls):
pass

(1)、第一个参数是cls,不能省略,但是通过类名.调用类方法,不需要传递cls参数
(2)、哪一个类调用的方法,方法内的cls就是哪个类的引用,当然也可以使用对象名进行调用,但是最好还是使用类名
(3)、在类方法内部可以直接访问类属性或者调用其他的类方法,使用cls可以访问类的属性和其他的类方法

3、静态方法

语法

@staticmethod
def 静态方法名():
pass

特点:
(1)、即不需要访问实例属性或者调用实例方法
(2)、也不需要访问类属性和类方法
(3)、通过 类名. 的方法调用

方法综合练习
在这里插入图片描述

4、总结

方法的采用
(1)、实例方法:方法内部需要访问实例属性,或者既要访问类属性又要访问实例属性,因为类只有一个,可以通过类名.的方式访问到类属性
(2)、类方法:方法内部只需要访问类属性或者类方法
(3)、静态方法;不需要访问实例属性和雷属性

肖战!!!!!!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《笨办法学Python3》是一本教授Python编程基础的书籍,它分为七个部分,分别是打印与输入、文件操作、函数、数据容器与程序结构、面向对象的类、项目骨架与自动测试以及搭建简易的网站。这本书通过一系列的练习和示例,帮助读者逐步学习Python的基本语法和编程概念。 在第一部分《打印与输入》中,你将学习如何使用print函数打印输出内容,以及如何使用input函数获取用户的输入。 在第二部分《文件操作》中,你将学习如何打开、读取和写入文件,以及如何处理文件中的数据。 在第三部分《函数》中,你将学习如何定义和调用函数,以及如何传递参数和返回值。 在第四部分《数据容器与程序结构》中,你将学习如何使用列表、字典和元组等数据容器,以及如何使用条件语句和循环结构控制程序的执行流程。 在第五部分《面向对象的类》中,你将学习面向对象编程的基本概念,包括类的定义、对象的创建和方法的调用。 在第六部分《项目骨架与自动测试》中,你将学习如何使用项目骨架来组织你的代码,并学习如何编写自动化测试来验证代码的正确性。 在第七部分《搭建简易的网站》中,你将学习如何使用Python搭建一个简单的网站,并学习一些与网站开发相关的知识。 通过《笨办法学Python3》,你可以系统地学习Python编程的基础知识,并通过练习提升自己的编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值