Python面向对象的理解
1、类里面的属性和方法
属性
类属性:直接定义在类里面的变量,叫做类属性,类属性可以通过类去访问,也可以通过对象访问。
公有属性: 不管在类里面还是类外面可以访问。
私有属性: 两个下划线开头的属性叫做私有属性,只能在类里面访问,在类外部是无法使用的。
实例属性:在类里面使用__init__方法来初始化,实例属性定义是对象.属性名 = 属性值,实例属性只能通过对象去访问。
方法
实例方法:第一个参数:self,self代表的是实例对象本身,只能使用实例对象来调用,实例方法一般是以对象为主体去调用的。
类方法:第一个参数:cls,cls代表的是类本身,可以使用类调用,也可以使用对象调用。类方法一般是以类为主体去调用的。
静态方法:没有必须要定义的参数,可以使用类调用,也可以使用对象调用。静态方法调用的时候,内部不会使用到对象和类相关的属性。
def func(): # 封装
class Students: # 学生类
# 类属性
identity = '学生'
# 私有属性
__unm = 100
# 初始化方法:实例属性
def __init__(self, name, age, gender, english_scores, math_scores, language_scores):
self.__name = name # 姓名
self.__age = age # 年龄
self.__gender = gender # 性别
self.__english = english_scores # 英语
self.__math = math_scores # 数学
self.__language = language_scores # 语文
# 实例方法:计算总分
def total_score(self):
# 获取字符串内容再计算
total = eval(self.__english) + eval(self.__language) + eval(self.__math)
print("计算的总分为{}+{}+{}={}".format(self.__english, self.__math, self.__language, total))
return total
@classmethod # 通过classmethod装饰器,声明一个类方法
def cls_func(cls):
print(cls)
print("这个是类方法")
# 静态方法
@staticmethod
def sta_method():
print('这个是静态方法')
obj = Students('xuan', '18', '女', '100', '150', '120')
obj.total_score()
obj.cls_func() # 对象调用类方法
Students.cls_func() # 类调用类方法
func()
最简单的事是坚持,最难的事还是坚持。