以一个python初学者的角度生成:创建私有属性,人员类别:__persontype = ‘person’。构造函数中使用 print 打印信息“父类构造函数被调用”。
时间: 2024-12-04 11:22:52 浏览: 12
在Python中,私有属性通常通过在名称前面添加两个下划线`_`来实现,但请注意,Python并没有严格的私有属性机制,它更像是一种约定。对于你提到的人员类别,我们可以创建一个抽象基类(ABC)来代表"person",并设置一个初始化方法打印信息。
以下是一个简单的示例:
```python
from abc import ABC, abstractmethod
class _PersonTypeMeta(type):
def __new__(cls, name, bases, attrs):
if '__init__' in attrs and not callable(attrs['__init__']):
raise TypeError("__init__ must be a callable")
return super().__new__(cls, name, bases, attrs)
class Person(metaclass=_PersonTypeMeta): # 使用metaclass来限制__init__的定义
__persontype = 'person'
def __init__(self):
"""
父类构造函数被调用
"""
print("父类构造函数被调用")
self._private_attribute = None # 私有属性,不能直接从外部访问
# 示例创建子类
class Employee(Person):
pass
emp = Employee()
```
在这个例子中,`__persontype`被视为一个类变量而不是私有属性,因为Python不支持完全意义上的私有属性。 `_private_attribute`才是真正的私有属性,因为它前面有两个下划线。当我们尝试直接访问它时,会抛出异常。
阅读全文