类的定义调用
#面向对象
#有意义的面向对象的代码
#类 = 面向对象
#类、对象
#实例化
#类的基本作用:封装
#类只负责描述或者定义一个行为不负责执行
#类和对象的区别
#类就像一个模版
#类可以产生很多个对象
class Student(): # 类的函数名(规范写法:单词之间首字母大写)
name = '' # 可以定义变量
age = 0 # 使用类下变量需要使用self访问变量
#行为:是这个方法 与 特征:数据成员刻画特征
def print_file(self): # 在类中使用函数 需要使用关键字self
print('name:' + self.name)
print('age:' + str(self.age))
类的调用
from c1 import Student #导入模块c1中的Student类
student = Student()
student.print_file()
方法和函数区别
#方法 和 函数区别
# 方法 :设计层面
# 函数 :面向过程
# 在类下面定义的(最好叫做方法)
# 在模块下的定义(最好叫做函数)
# ---------------------------------
# 变量
# 在类里(叫做:数据成员)
# 在模块中(叫做:变量)
实例化意义
class Student():
name = '' # 可以定义变量
age = 0 # 使用类下变量需要使用self访问变量
def __init__(self,name,age):#形式参数可以随意定义
#构造函数
#初始化对象的属性
self.name = name #后面的name为形式参数
self.age = age
print('student')
return
student = Student('小明','18')
print(student.name)
返回
>>>student
>>>小明
类变量和实例变量
类变量:是和类关联在一起的
实例变量:是和对象关联在一起
class Student():
name = ''
age = 0
def __init__(self,name,age):
self.name = name
self.age = age
def do_homework(self):
print('homework')
student = Student('小明','18')
print(student.__dict__)
print(Student.__dict__) #打印出类下面所有变量
#首先去实例变量中寻找,如果找不到去类变量中找
学习了哪些:
sum统计班级人总数
class Student():
sum =0 #做+1操作
def __init__(self,name,age):
self.name = name
self.age = age
self.__class__.sum += 1
print('当前班级学生总数:' + str(self.__class__.sum))
student = Student('小明','18')
student1=Student('小红','20')
student2= Student('白棋','26')
类方法
类中的方法可以调用类中的类方法(不建议)
类中的变量不建议用方法直接访问,提倡用类方法去访问或者修改
私有方法和公开方法
私有方法在 方法名前加’__’
__ dict __ 变量内部成员
继承
标准写法
from c6 import Human
class Student(Human): #是当前类是(子类) People 是当前类的(父类)
sum =0
def __init__(self,name,age):
self.name = name
self.age =age
self.__score =0
self.__class__.sum += 1
def do_homework(self):
print('english homeword')
例子:
from c6 import Human
#变量是可以被子类继承的
class Student(Human): #是当前类是(子类) People 是当前类的(父类)
# sum =0
# def __init__(self,name,age):
# self.name = name
# self.age =age
# self.__score =0
# self.__class__.sum += 1
def do_homework(self):
print('english homeword')
student1 = Student('小名',19)
print(student1.sum)
print(Student.sum)
print(student1.name)
print(student1.age)
-------运行结果------
>>>0
>>>0
>>>小名
>>>19
super调用父类方法
class Student(Human): #是当前类是(子类) People 是当前类的(父类)
# sum =0
def __init__(self,school,name,age):
self.school = school
# Human.__init__(self,name,age) #通过类调用这个方法需要传入"self"
super (Student,self).__init__(name,age) #调用父类方法