搜索
写经验 领红包

列举出面向对象的常用魔术方法有哪些(面向对象法是什么意思)

导语:面向对象之魔术方法-属性相关

面向对象方法----__str__

平时在写程序的时候,我需要快速知道打印出来的是什么信息,比如下面我print(p)的时候,打印出来的是地址.但是地址对于程序员来说,看起来是很费解的,没有意义. 程序员只想看到用户相关的一些信息.

因此我采用__str__的方法,返回一些程序员能够看懂的信息.

魔术方法的意思就是,我虽然没有去调用,但是自己自动会去触发执行.

只要一触发,就会把返回值扔给print(p)里面去打印

我也可以直接返回名字和年龄

对象之间比较大小

__gt__ great than

__lt__ less than

__eq__ equal

class Student:    def __init__(self,name,age):        self.name=name        self.age=age    def __gt__(self, other):        return self.age>other.ageS1=Student(&39;,20)S2=Student(&39;,19)print(S1>S2)

1:__getattr__

触发时机:获取不存在的对象成员时触发

先看一个例子:

正常设置对象self.name的时候,print(p.name)可以正常打出.

如果没有设置self.age的时候,print(p.age)就会报错

class Persion:    def __init__(self,name):        self.name=namep=Persion(&39;)print(p.name)print(p.age)

为了解决这个错误问题,引入__getattr__

正常情况下类中被定义的对象可以正常访问, 但是某些情况下,例如人的年纪不想被人知道,也就是这个对象是个人的私有秘密.我们可以给这类对象设置一下私有化

class Persion:    def __init__(self,name):        self.name=name        self.age=20p=Persion(&39;)print(p.name)print(p.age)

对象私有化,两个下划短杆

如果我们一定要访问到这个私有化的对象,我们只能在类中去访问

对象是私有的,方法也可以是私有的,方法也是加两个下滑短杆

本文内容由小凡整理编辑!