# 特殊方法,也称为魔术方法
# 特殊方法都是用__开头和结尾的
# 特殊方法一般不需要我们手动调用,需要在一些特殊情况下自动执行
# 定义一个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, ',尚未成年')