说明:面向对象语言中的类中都只有两种成员
1.成员变量,就是我们常说的整型,浮点型,字符串型等数据
2.成员函数,就是类中的函数也叫方法
最不要脸的地方来了:很多语言为了显示与众不同,老是给他的类中的成员取不同的名字,显示自己的独创性,显得语言的独一无二,显得自己的语言最牛逼(其实底层都是相互抄袭)结果弄得学习的人一塌糊涂.
- 成员变量:叫法有静态成员,字段,静态字段,属性
- 成员函数:叫法有动态成员,方法,动态属性 造这么多名词干啥?弄得我们学的乱成一锅粥,
python中的叫法: - 成员变量–>属性
- 成员函数–>方法(或者动态属性)
- python中的叫"函数"东西不属于类中的成员
1.类
1.定义类的格式:
class 类名:
方法列表
2.定义方法的格式:
def 方法名(self, 形参2, 形参3, …):
方法体
3.创建对象的格式:
变量名 = 类名()
说明 python中第一个参数不写self的方法称之为函数,方法是类中的动态属性。self相当于java语言和c++中类中的方法中的this关键字,只不过在Java和c++中方法中的第一个this参数编译器编译时默认给我们加上不需要手动加上(Java语言中多态实现分析的关键)
class Student:
# 吃饭
def eat(self, food):
print(f"吃{food}")
# 睡觉
def sleep(self, where):
print(f"睡在{where}")
# 学习
def study(self, course):
print(f"学习{course}")
方法中的self表示 正在调用方法的对象,哪个对象正在调用方法,self就表示哪个对象既self中存储调用当前方法的对象的引用(也就是对象的地址).
python解释器能够根据self的值确定是哪个对象正在调用方法(类中的属性在对象中,而方法不再对象中内存分析).
class Student:
def study(self, course):
print(f"学习{course}")
s1 = Student()
s1.study("python")
s2 = Student()
s2.study("python")
表皮分析:
内存分析(缺1)
2**__ init() __方法**:又叫魔法方法(扯淡),用来做变量初始化 或 赋值 操作,在类实例化对象的时候,会被自动调用。("“python牛逼python世界第一一个小脚本语言有啥可吹的–致龟叔吧”"其实功能与别的面向对象语言中的构造函数(又叫构造器)的功能一模一样,在这里加几条下划线变个名字后非要叫什么鬼的魔法方法,)
作用:1.实例化对象 2.初始化成员变量
python与其他语言不同的是类的属性要写在__ init() __方法中
1.创建对象时(实例化一个对象时)python解释器干三件事
- 1.在堆区开辟一块空间
- 2.在堆中实例化对象
- 3.调用构造函数初始化类的属性(成员变量)
class Student:
def __init__(self):
print("只要创建对象,不用你们手动调用我,编译器会自动调用我这个亲生的魔法方法(构造函数).....")
#创建对象
stu = Student()
运行结果:
2.1.python的属性要写在__init__(self):方法中(既构造函数中)这与其他面向对象语言不通(Java,c++的成员变量都是写在类中,仅仅在构造函数中初始化)
class Student:
def __init__(self):
self.name = "欧阳铁娃"
self.age = 18
self.sex = "男"
stu = Student()
#通过对象名访问类的属性(非私有)
print(stu.name)
#通过对象名更改类的属性
stu.name = "诸葛狗剩"
print(stu.name)
运行结果: