1.内置的类属性
- name
类._ _ name _ _ 获取类的名字 - doc
类._ _ doc_ _ 获取类的文档说明 - dict
类._ _ dict_ 获取类中所有的类属性和对应的值,以键值对的形式存到字典里
对象. _ dict_ _ 获取对象中所有的属性,以键值对的形式存到字典(常用的方法) - moudle
类._ _ moudle_ _ 获取当前类所在的模块的名字 - bases
类._ _ bases_ _ 获取当前类的父类
2.私有化
(1)在python中类中的属性和方法的私有化:-->直接在属性名或者方法前加_ _
(2)属性或者方法的私有化的结果:-->在外部不能直接使用,但是可以在内部使用
如:
class Person:
"""人类"""
__number = 40 # 私有字段
def __init__(self, name='', age=0):
self.name = name
self.__age = age # 私有属性
def __run(self): # 私有方法
print('%s再跑' % self.name)
3.getter和setter
概念:
属性假的私有化
:如果对于对象的某个属性不希望别人直接拿来用,但是后面又需要改动的时候,这时候就可以在属性前面加个_.这个属性获取和改动的时候就需要通过gatter和setter.
(1)getter:获取属性的值
@property
def 属性名(self):
return self._属性名
(2)setter:给属性赋值
@属性名.setter
def 属性名(self, value):
self._属性名 = value
如:
class Student:
"""学生类"""
def __init__(self):
"""
声明属性的时候前面加一个'_'是为了告诉别人这个属性不能直接使用
"""
self._name = ''
self._score = 0
self._age = 0
# 给属性_name添加getter
@property
def name(self):
return self._name
# 给属性_name添加setter
@name.setter
def name(self, value):
self._name = value
if __name__ == '__main__':
stu1 = Student()
stu1.name = 'sjk'
print(stu1.name)
print(stu1.__dict__)
#输出
sjk
{'_name': 'sjk', '_score': 0, '_age': 0}
4.继承
继承方法:
class 类名(父类):
属性
方法
- (1)继承基础
python中类是可以继承的,并且支持多继承(一般都只是单继承) - (2)python中所有的类默认继承python的object类.(基类)
- (3)能继承的内容:(直接拥有父类的属性和方法,继承后父类的属性和方法还是存在的)
a.对象的属性和方法,类的字段和类方法,静态方法都可以继承(私有的继承无意义--不能继承)
b.slots(属性约束)的值不会继承
c.getter和setter可以继承
如:
class Person:
"""人类"""
def __init__(self):
self.name = ''
self.age = 0
self.sex = '男'
self.__length = 0
self._face = 9
def eat(self):
print('%s 在吃饭' % self.name)
# 类字段
number = 61
@classmethod
def get_number(cls):
print('人的数量:%d' % cls.number)
@staticmethod
def hurt_earth():
print('人类破坏地球')
class Student(Person):
"""学生类"""
pass
if __name__ == '__main__':
stu = Student()
stu.name = '小敏'
stu.sex = '女'
print(stu.__dict__)
print(stu.eat())
print(stu._face)
Student.hurt_earth()
#输出
{'name': '小敏', 'age': 0, 'sex': '女', '_Person__length': 0, '_face': 9}
小敏 在吃饭
None
9
人类破坏地球
网友评论