美文网首页数析
python 定制类

python 定制类

作者: 我爱学python | 来源:发表于2020-01-16 14:58 被阅读0次

python 中可以使用一些函数,对类进行定制,方便我们的使用。

比如slots函数、str函数、repr函数。。。

__ slots__

slots函数用于定制可以动态添加的类的属性,比如:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Student(object):
    __slots__ = ('name', 'age')
    def __init__(self, name):
        self.name = name
 
a = Student('Bob')
a.name = 'hehe'
a.age = 17
 
print a.name  #hehe
print a.age    #17

slots函数后面的('name', 'age')限定了,Student类的对象只能动态添加‘name’和'age'两种属性,添加其他的会报错。

此处要注意,如果Student是继承字object的新式类时,slots函数才起作用。

__ str__

已经定义好的类的对象,直接打印时(print a)会调用str()函数,可以通过在类中定义str函数,可以改变对象打印print a的结果。

class Student():
    __slots__ = ('name', 'age')
    def __init__(self):
        self.name = 10
         
    def __str__(self):
        return 'Student object (name: %s)' % self.name
a = Student()
print a #Student object (name: 10)

但是,如果不用print, 而是直接写变量名,则打印结果还是看不懂:<main.Student instance at 0x0276D710>。此时就需要repr函数。

__ repr__

一般的,repr函数内容跟str一样,所以可以采用如下写法:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
    class Student():
    __slots__ = ('name', 'age')
    def __init__(self):
        self.name = 10
         
    def __str__(self):
        return 'Student object (name: %s)' % self.name
 
    __repr__ = __str__
 
a = Student()
a #Student object (name: 10)

所以,类中重新定义str是改变print的显示内容的,重新定义repr是改变直接显示对象内容的。

相关文章

  • python 定制类

    python 中可以使用一些函数,对类进行定制,方便我们的使用。 比如slots函数、str函数、repr函数。。...

  • *(扩展)定制类

    用特殊方法定制类 ***********************#特殊方法是Python 中用来扩充类的强有力的方...

  • python中定制类

    python的特殊方法 特殊方法定义在class中 不需要直接调用 Python的某些函数或者操作符会调用对应的特...

  • python定制类__getitem__()方法

    今天在学习python的定制类,教程里面展示了如何用__getitem__方法,实现某个类的切片。pythoncl...

  • 2015.4.15

    晴 学习内容 1.python 廖雪峰python教程面对对象高级编程部分,剩下定制类和元类还没看 2.计算机组成...

  • Python:13.定制类

  • 【Python】笔记19(定制类)

    回顾__slots__,用来限制class实例所能添加绑定的属性;.__len__用于调用该string类型的字符...

  • 【python】定制类(笔记摘录)

    让实例打印出来好看__str____repr__ __iter____next__该方法返回一个迭代对象,然后,P...

  • python学习(六)-定制类

    形如__xxx__的变量或者函数名在python中有特殊用途 __str__和__repr__ 把一个类的实例变成...

  • python定制类、枚举类和元类

    定制类 : 类里面有很多自带的方法,我们可以重写他们 _str_ print一个实例对象时会自动调用_str_方法...

网友评论

    本文标题:python 定制类

    本文链接:https://www.haomeiwen.com/subject/xpvfzctx.html