python学习-class封装

# 封装 类=属性+行为 抽像 -

class StudentV2:

# 类属性 所有的实例可以共享 。不属于任何实例的特性。

is_people = True

# 类方法 1、装饰器。2、参数是cls 表示类本身。

@classmethod

def pepole_aciton(cls):

print("吃饭,睡觉!!")

print(cls.is_people)

# 初始化工作

def __init__(self,name,stu_id,class_name,city="上海"):

self.name = name # 实例属性

self.stu_id = stu_id

self.class_name = class_name

self.city = city

self._protect_friend = "鸡腿"

self.__private_money = 500

print("初始化工作完成,我已经有了具体的名字、学号、班级、城市这四个属性。")

# 行为 self就是我,我就是self。 类实例化之后,明确我是谁。

def attend_course(self):

# 300行 拆成四个小功能

self._private_func()

print("{}正在学习类和对象。".format(self.name))

return

def _private_func(self):

pass

def __private_func_deep(self):

pass

# 行为

def do_homework(self):

print("{}在写作业中。。".format(self.name))

return

# 开放api,获取私有变量值。

def get_counts(self):

print("我有{} 个 {}".format(self.__private_money,self._protect_friend))

#print(self._protect_friend)

# # 实例化类的同时,会主动调用init函数。

# luoluo = StudentV2("罗罗","222222","python17","北京")

# print(luoluo.stu_id)

# luoluo.attend_course() # 行为

#

# hukai = StudentV2("胡凯","333111","python17","深圳")

# print(id(hukai))

# hukai.do_homework()

# 类属性的调用

# print(StudentV2.is_people)

# # print(StudentV2.name) # 类是没有name属性

# StudentV2.pepole_aciton()

luoluo = StudentV2("罗","222222","python17","北京")

# print(luoluo.is_people)

# print(luoluo.name)

# print(luoluo._protect_friend)

# print(luoluo.__private_money)

# print(luoluo._StudentV2__private_money) # 改变了方式

luoluo.get_counts()

"""

类属性和实例属性

类方法、实例方法

# 私有属性、私有行为

_XXX 私有的。类和子类的对象可以访问,提供api给你访问。

__XXX 私有的。类的对象可以访问。

"""