特殊方法

# 特殊方法,也称为魔术方法
# 特殊方法都是用__开头和结尾的
# 特殊方法一般不需要我们手动调用,需要在一些特殊情况下自动执行

# 定义一个Person类
class Person(object):
    '''
    人类
    '''
    def __init__(self, name , age):
        self._name = name
        self._age = age

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, name):
        self._name = name

    @property
    def age(self):
        return self._age

    @name.setter
    def age(self, age):
        self._age = age

    # __str__这个特殊方法会在尝试将对象转换为字符串的时候调用
    # 它的作用可以用来指定对象转换为字符串的结果
    def __str__(self):
        return 'Person [name = %s , age = %d]'%(self._name, self._age)

    # __repr__()这个特殊方法会在对当前对象使用repr()函数时调用
    # 它的作用是指定对象在Python‘交互模式’中直接输出的效果
    def __repr__(self):
        return 'Hello'

    # object.__lt__(self, other) 小于
    # object.__le__(self, other) 小于等于
    # object.__eq__(self, other) 等于
    # object.__ne__(self, other) 不等于
    # object.__gt__(self, other) 大于
    # object.__ge__(self, other) 大于等于

    # __gt__()会在对象做大于比较的时候调用,该方法的返回值将会被作为比较的结果
    def __gt__(self, other):
        # if self._age > other._age:
        #     return True
        # else:
        #     return False
        return self._age > other._age

    # object.__bool__(self)
    # 可以通过bool来指定对象转换为布尔值时的情况
    def __bool__(self):
        return self._age >= 18

    @property
    def name(self):
        return self._name


# 创建对象
p1 = Person('李沁',16)
print(p1)   # Person [name = 李沁 , age = 18]

p2 = Person('迪丽热巴',19)

# 比较p1以及p2两个人的年龄大小
print(p1 > p2)  # False

# 判断p1是否已经成年
if p1:
    print(p1.name, ',已经成年了')
else:
    print(p1.name, ',尚未成年')
posted @ 2022-06-12 18:44  Na氢氧  阅读(38)  评论(0编辑  收藏  举报