初识python

来源:互联网 发布:万网域名主机记录 编辑:程序博客网 时间:2024/06/03 16:13

第一天:

函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上

都是数据类型;

可以用 dir() 函数获取变量的所有属性:dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性, 就需要用

getattr() 和 setattr( )函数了:

Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。可以用 type() 函数获取变

量的类型,它返回一个 Type 对象:

对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必

须提供我们自己的特殊方法 __cmp__()

第二天:

如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),

它返回元素的个数。

由于Python是动态语言,任何实例在运行期都可以动态地添加属性。如果要限制添加的属性,例如,Student类只允许添加 name、gender

和score 这3个属性,就可以利用Python的一个特殊的__slots__来实现。

类的继承:

class Person(object):
    __slots__ = ('name', 'gender')
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

class Student(Person):
    __slots__ = ("score",)
    def __init__(self,name,gender,score):
        super(Student, self).__init__(name,gender)
        self.score = score

需要注意是双下划线(_)

一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()我们把 Person 类变成一个可调用对象:

class Person(object):    def __init__(self, name, gender):        self.name = name        self.gender = gender    def __call__(self, friend):        print 'My name is %s...' % self.name        print 'My friend is %s...' % friend

在可以对 Person 实例直接调用:

>>> p = Person('Bob', 'male')>>> p('Tim')My name is Bob...My friend is Tim...

单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著


原创粉丝点击