编写一个Person类,定义人的基本属性:name(姓名)、age(年龄)、gender(性别)、partner(配偶)。 要求至少为Person类写一个marry(Person p)方法,来判断两个人是否可以结婚。如果可以结婚,将其partner属性赋值为其配偶。
时间: 2024-06-08 21:11:10 浏览: 248
java代码-使用java解决在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄的源代码
下面是一个可能的Person类的实现,包含姓名、年龄、性别和配偶属性,以及判断是否可以结婚的 marry 方法:
```python
class Person:
def __init__(self, name, age, gender, partner=None):
self.name = name
self.age = age
self.gender = gender
self.partner = partner
def marry(self, p):
if self.gender == p.gender:
print("同性恋不能结婚!")
elif abs(self.age - p.age) > 10:
print("年龄相差太大,不能结婚!")
elif self.partner or p.partner:
print("其中一方已经结婚了,不能再结婚!")
else:
self.partner = p
p.partner = self
print(f"{self.name}和{p.name}结婚了!")
def __str__(self):
if self.partner:
return f"{self.name}({self.gender}, {self.age}) 和 {self.partner.name}"
else:
return f"{self.name}({self.gender}, {self.age})"
```
这个类的使用方法如下:
```python
# 创建两个人对象
tom = Person("Tom", 28, "男")
lucy = Person("Lucy", 25, "女")
# 两个人结婚
tom.marry(lucy)
print(tom) # Tom(男, 28) 和 Lucy
print(lucy) # Lucy(女, 25) 和 Tom
# 再创建一个人对象
john = Person("John", 35, "男")
# 与已婚的Tom结婚
john.marry(tom) # 其中一方已经结婚了,不能再结婚!
print(tom) # Tom(男, 28) 和 Lucy
print(john) # John(男, 35)
# 与同性别的Lucy结婚
john.marry(lucy) # 同性恋不能结婚!
```
阅读全文