> 自媒体
列举出面向对象的常用魔术方法有哪些(面向对象法是什么意思)
导语:面向对象之魔术方法-属性相关
面向对象方法----__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)
对象私有化,两个下划短杆
如果我们一定要访问到这个私有化的对象,我们只能在类中去访问
对象是私有的,方法也可以是私有的,方法也是加两个下滑短杆
本文内容由小凡整理编辑!