Class 类
- 1、私有变量
- 2、私有方法
- 3、对象关联
Class Abc(object):
def xxx():
pass
Class Abc:
def xxx():
pass
1、私有变量
类变量可以被外部调用并改动值
class Cat(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return "我的名字叫{},今年{}岁".format(self.name,self.age)
xiaobai = Cat("小白",10)
print(xiaobai)
xiaobai.age=20
print(xiaobai)
此时小白的年龄会被改动,为了防止这种在外部改动的方法,我们可以使用私有属性,__xxx ,定义对象时在前面加上两个_即可,此时该属性(__xxx)只能被该类里面的方法去调用
# -*- coding: utf-8 -*-
class Cat(object):
def __init__(self, name, age):
self.name = name
self.__age = age
def __str__(self):
return "我的名字叫{},今年{}岁".format(self.name,self.__age)
def change_age(self, new_age):
self.__age = new_age
xiaobai = Cat("小白",10)
print(xiaobai)
xiaobai.age=20
print(xiaobai)
# 此时调用内部方法去改动
xiaobai.change_age(12)
print(xiaobai)
可以看到小白年龄被成功修改
2、私有方法
跟私有对象同理,不能直接 类名.__方法调用
此时会报错找不到这个__change_age方法,该方法是私有方法,只能被类里面的其他方法调用,例如change_age_new
# -*- coding: utf-8 -*-
class Cat(object):
def __init__(self, name, age):
self.name = name
self.__age = age
def __str__(self):
return "我的名字叫{},今年{}岁".format(self.name,self.__age)
def __change_age(self, new_age):
self.__age = new_age
def change_age_new(self, new_age):
if new_age > 0:
self.__change_age(new_age)
xiaobai = Cat("小白",10)
print(xiaobai)
xiaobai.change_age_new(-5)
print(xiaobai)
xiaobai.change_age_new(20)
print(xiaobai)
3、对象关联
例如 有一个班级叫 room3-2 ,班里有 张三、李四、王五、郑六四位学生,班级与学生存在关联关系
此时我们给班级新建一个方法,用于 添加学生进入班级
则可以通过班级类查看学生类下信息,person.name实际调用的是student类中的self.name属性