面向对象(初级)

        运用函数的好处是:提高了代码的复用率

def func():
    print("123")

func()  #即可调用成功

面向对象:注重于结果

面向过程:注重于细节化过程,需要严谨清晰的思路,不可出错的特点

class  : 定义一个类

"""

为了区别类与函数:

 定义在类里的变量称为属性,定义在类里的函数称为方法 

"""

类的命名一般遵循“驼峰命名法” -- ClassPerson

定义在类里变量的引用 :类名+点操作符+操作的属性和方法+对应的参数  e.g. Person.play(name)

魔法方法:

在特定的场景之下有python解释器自动调用   #在实例化对象时自动调用 

e,g, tf = Person("听风",18)  对像名=类名()

__init__函数的理解:

#初始化函数(函数)

#self代表实例化对象本身,python内部会自动转入实例,其实就是tf这个变量

#析构函数

def __del__(self):

        print("%s尽行完毕")

如果再在交互模式中引用函数,函数不存在

 真正未完成析构的是: (交互模式)

del zs

然而在析构函数中的代码,则是对开发者的一个提示

继承与重写

 这里的pass 交互后啥都没有,__init__也没有定义,但是为什么可以呢?

子类拥有父类里面的属性解函数方法----继承

使用时,只需要把父类名放在小括号中即可

重写时必须有父类相同的函数名和参数列表,这里我们介绍两种 重写的方式:

 这里我们主要使用第二种方法

# object 是所有类的父类,如果在定义类的时候没有设置父类,默认继承object

多继承:

class Test(a,b):
    pass 
"""
多继承最重要的是注意继承顺序,即a在前继承还是b 在前继承
交互模式中,我们也可以用  Test.mro()  类名.mro() 进行继承顺序的查看
"""

再次顺序下,默认前面一个类是后面类的子类

Test.mro()
[<class '__main__.Test'>, <class '__main__.HuNan'>, <class '__main__.HuBei'>, <class '__main__.Person'>, <class 'object'>]

对于我们的实例对象不存在时,代码会报错,后面的代码均不会运行,为了避免此场景发生,下面介绍另外的几种方法:

1. hasattr(tf,"name")           #返回结果以布尔值展现

2.getattr(tf,"sex")                #如果没有属性它就会报错

3.setattr(tf,"name","xxx")    #意味着修改为"xxx"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值