用python写一个1. 编写一个Person类,要求至少包含姓名(name)、年龄(age)、性别(sex)三个实例属性,完成如下要求: (1) 编写能够打印person实例信息的函数,可以传递任意一个或任意两个参数实例化对象(提示:默认值)后打印相关信息, (2) 通过增加Count类属性,对新增对象或者删除对象时,count能够自动变化 (3) 设置至少一个私有属性,该属性有一定含义,并且确需将其设置未私有属性,并使用@property装饰器可以对该私有属性进行操作。 (4) 增加一个可以实时打印当前内存中Person对象的个数的静态方法。(对象生成或删除时对象数量应同步更新) (5) 增加类方法,可以根据有一定格式的字符串,例如:“小明,20,男”,实例化并返回一个Person对象 (6) 以上功能都需要编写测试代码测试你的类定义符合题目要求。
时间: 2024-01-28 17:03:47 浏览: 835
好的,以下是符合要求的Person类的实现代码及测试代码:
```python
class Person:
count = 0 # 类属性,记录Person对象数量
def __init__(self, name='', age=0, sex=''):
self.name = name
self.age = age
self.sex = sex
Person.count += 1 # 每次创建对象时,count自增1
def __del__(self):
Person.count -= 1 # 每次删除对象时,count自减1
def __str__(self):
return f"姓名:{self.name},年龄:{self.age},性别:{self.sex}"
@property
def _private(self):
return self.__private
@_private.setter
def _private(self, value):
self.__private = value
@staticmethod
def show_count():
print(f"当前Person对象数量为:{Person.count}")
@classmethod
def from_str(cls, info_str):
info_list = info_str.split(',')
name = info_list[0]
age = int(info_list[1])
sex = info_list[2]
return cls(name, age, sex)
# 测试代码
if __name__ == '__main__':
# 创建Person对象
person1 = Person('张三', 25, '男')
person2 = Person('李四', 30, '女')
person3 = Person('王五', 28, '男')
# 打印Person对象信息
print(person1)
print(person2)
print(person3)
# 删除对象
del person3
# 修改私有属性的值
person2._private = '这是私有属性的新值'
print(person2._private)
# 打印Person对象数量
Person.show_count()
# 通过类方法实例化对象
person4 = Person.from_str("小明,20,男")
print(person4)
```
输出结果:
```
姓名:张三,年龄:25,性别:男
姓名:李四,年龄:30,性别:女
这是私有属性的新值
当前Person对象数量为:2
姓名:小明,年龄:20,性别:男
```
阅读全文