博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础知识记录
阅读量:4281 次
发布时间:2019-05-27

本文共 1639 字,大约阅读时间需要 5 分钟。

  1. 继承和多态:

    对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()方法。

    对于Python这样的动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了:

  2. 获得对象信息

     type()函数:返回参数类型

              isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上

             如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法:

>>> dir('ABC')['__add__', '__class__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill']

getattr(obj,属性):获取属性值

setattr(obj,属性):设置属性

hasattr(obj,属性):判断属性是否存在

>>> hasattr(obj, 'x') # 有属性'x'吗?True>>> obj.x9>>> hasattr(obj, 'y') # 有属性'y'吗?False>>> setattr(obj, 'y', 19) # 设置一个属性'y'>>> hasattr(obj, 'y') # 有属性'y'吗?True>>> getattr(obj, 'y') # 获取属性'y'19>>> obj.y # 获取属性'y'19

3.实例属性和类属性

类属性:直接在class中定义属性,这种属性是类属性,归Student类所有:

class Student(object):    name = 'Student'

实例属性:给实例绑定属性的方法是通过实例变量,或者通过self变量:

class Student(object):    def __init__(self, name):        self.name = names = Student('Bob')s.score = 90

实例属性调用方法:实例对象.实例属性

类属性调用方法:类.实例属性 和 实例对象.实例属性

注意:千万不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。

如果实例属性和类属性使用相同的名字:那么s.name = 'Michael'  # 给实例绑定name属性,由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性,print(s.name) 就会变成Michael。但是类属性并未消失,用Student.name仍然可以访问,仍然是Student

4.特殊方法

__str__():重写该方法,print(Student('Michael'))可以打印

__repr__():直接显示变量调用的不是__str__(),而是__repr__(),所以重写__repr__()方法,可以改变直接调用变量的打印(直接调用变量代表:s = Student()   print(s))

__call__:任何类,只需要定义一个__call__()方法,就可以直接对实例进行调用  

class Student(object):    def __init__(self, name):        self.name = name    def __call__(self):        print('My name is %s.' % self.name)调用方式如下:>>> s = Student('Michael')>>> s() # self参数不要传入My name is Michael

callable()函数,我们就可以判断一个对象是否是“可调用”对象,也就是判断一个变量是对象还是函数呢

转载地址:http://hffgi.baihongyu.com/

你可能感兴趣的文章
串口 (二) 串口硬件及操作-stm32
查看>>
串口 (三) linux串口
查看>>
串口 (四) linux串口之驱动代码
查看>>
串口 (五) linux串口之应用
查看>>
I2C (一) 协议
查看>>
I2C (二) 硬件操作
查看>>
I2C (三) linux I2C
查看>>
I2C (四) linux I2C 驱动代码
查看>>
I2C (五) linux I2C 与 sysfs
查看>>
SPI (一) 协议
查看>>
SPI (二) 硬件操作
查看>>
SPI (三) linux SPI
查看>>
网卡 (一) 1 LAN简介
查看>>
网卡 (五) LWIP ip模块
查看>>
网卡 (六) LWIP udp模块
查看>>
网卡 (十四) LWIP 应用层 dhcp
查看>>
查看进程的相关信息
查看>>
ps命令
查看>>
硬件上电时序
查看>>
网卡 (一) 3 无线LAN 硬件 802.11 Wi-Fi芯片
查看>>