类和对象
- class定义类
- 相当于定义一个班级,然后给班级命名,给班级添加关键标签,比如高三,尖子班、、、
- 一般定义在类里面的函数都要在括号中加上self
- self可以用别的名称代替
- 不是关键字
- self指代本身
class Student():
grade = "高三"
leixing = "尖子班"
major = "矿调"
def stu(self):
print("给我钱")
return None
xiaonan = Student()
tan = Student()
print(xiaonan.grade)
print(xiaonan.major)
print(xiaonan.leixing)
print("*"*20)
print(xiaonan)
print(xiaonan.stu())
print(tan.major)
print(tan.stu())
高三
矿调
尖子班
********************
<__main__.Student object at 0x000002C76881BC88>
给我钱
None
矿调
给我钱
None
class s():
na = "xia"
age = 18
def f(self):
print("my name is {},i am {} years old".format(self.na,self.age))
return None
sss = s()
print(sss.f())
my name is xia,i am 18 years old
None
类的变量和实例的变量,在变量名称一样的情况下
- 类的变量是全局变量,实例对象的变量是局部变量
- 在类中定义的变量和实例对象的变量不是一个
- 如果实例对象没有定义变量的值,那么会使用类的变量
- 如果实例对象定义了变量的值,那么实例变量和类变量的值不一样
- 如果都没有定义变量,然后在后面使用了,会报错
构造函数
- 执行初始化工作
- 使用特殊的名称和写法
- 实在实例化的时候自动执行
- 实例化的时候第一个被执行的函数
class Student():
name= "noname"
age= 0
def __init__(self):
print("我是构造函数")
sss = Student()
print("-------")
print(sss.name)
print(sss.age)
我是构造函数
-------
noname
0