Day05--面向对象
s
面向对象的核心是 类、对象
class Student():
name = ''
age = 0
def __init__(self):
pass
def do_homework(self):
print('homework')
class Printer():
def print_file(self):
print('name:' + self.name)
print('age:' + str(self.age))
student = Student()
student.print_file()
注意:类的调用要在其外部,最好把类的定义放在一个单独的模块
🧸方法 和 函数的区别:
? 方法:设计层面 的一种称谓 函数:程序运行、过程式 的一种称谓,见上栗
🧸类的定义:
? 类是现实世界或四维世界中的实体在计算机中的反映, 它将数据以及这些数据上的操作封装在一起
? 类就像一个模板,可以产生很多个不同的对象
🧸变量
🎈‘类变量’ 和 ‘实例变量’
class Student():
name = '三國'
age = 0
def __init__(self, name, age):
self.name = name
self.age = age
def do_homework(self):
print('homework')
class Printer():
def print_file(self):
print('name:' + self.name)
print('age:' + str(self.age))
stu1 = Student('曹操', 35)
stu2 = Student('刘备', 35)
print(stu1.name, stu1.age)
print(stu2.name, stu2.age)
print(Student.name, Student.age)
print(stu1.__dict__)
在上述示例中,如实例stu1 寻找值得路径为:实例变量–》类变量,若实例变量存在则打印实例变量 ,否则寻找类变量,并打印类变量
🧸方法
🎈1.实例方法
class Student():
name = '三國'
age = 0
def __init__(self, name, age):
self.name = name
self.age = age
def do_homework(self):
print('homework')
stu1 = Student('曹操', 35)
stu2 = Student('刘备', 35)
print(stu1.name, stu1.age)
print(stu2.name, stu2.age)
print(Student.name, Student.age)
print(stu1.__dict__)
🍅如何在实例方法中访问类变量:
class Student():
sum1 = 0
name = '三國'
age = 0
def __init__(self, name, age):
self.name = name
self.age = age
print(name)
print(age)
print(Student.sum1)
print(self.__class__.sum1)
def do_homework(self):
print('homework')
stu1 = Student('曹操', 35)
🎈2.类方法:
class Student():
sum1 = 0
name = '三國'
age = 0
def __init__(self, name, age):
self.name = name
self.age = age
def do_homework(self):
print('homework')
@classmethod
def plus_sum(cls):
cls.sum1 += 1
print('当前班级学生总数:', cls.sum1)
stu1 = Student('曹操', 35)
Student.plus_sum()
stu2 = Student('刘备', 35)
Student.plus_sum()
🎈3.静态方法:
class Student():
sum1 = 0
name = '三國'
age = 0
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def add(x, y):
print(Student.sum1)
print('This is a static method:')
stu1 = Student('曹操', 35)
stu1.add(1, 2)
Student.add(1, 2)
🧸构造函数:
? ==作用:==让模板生成不同的对象
? 构造函数只能返回None类型,不能返回别的类型
def __init__(self):
pass
|