活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
…
欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:
**
1,学习目标
提示:可以添加学习目标
例如: 一周掌握 Python 入门知识
2,学习内容
提示:可以添加要学的内容
例如:
A,掌握 Python 基本语法
B,掌握 Python 列表、字典、元组等集合类型的用法
C,掌握 Python 函数
D,掌握 Python 常用模块
E, 掌握 Python 模块与包
F,掌握 Python 类与对象
3,学习时间
每天拿出来两个小时
4,学习产出
CSDN技术博客 每天一篇
类和对象
对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类。
类的构成
类(Class) 由3个部分构成
01). 类的名称:类名
02). 类的属性:一组数据
03). 类的方法:允许对进行操作的方法 (行为)
定义类
定义一个类,格式如下:
class 类名:
方法列表
demo:定义一个Hero类
class Hero: # 经典类(旧式类)定义形式
class Hero(object): # 新式类定义形式
def info(self):
print(“英雄各有见,何必问出处。”)
说明:
定义类时有2种形式:新式类和经典类,上面代码中的Hero为新式类,注释部分则为经典类;
object 是Python 里所有类的最顶级父类;
类名 的命名规则按照"大驼峰命名法";
info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量 这个变量指向了实例对象
创建对象
python中,可以根据已经定义的类去创建出一个或多个对象。
创建对象的格式为:(实例化对象)
对象名1 = 类名()
对象名2 = 类名()
对象名3 = 类名()
student = {}
def student_add():
pass
def student_delete():
pass
# 声明类
class Student(object):
# 类属性
clsas_name = "34期"
num = 30
# 方法
def listen(self):
print("听课")
def homework(self):
print("写作业")
# 实例化对象 : 类名()
s1 = Student()
s2 = Student()
# print(id(s1),id(s2))
# 对象通过句点符号调用属性和方法
# print(s1.class_name) # 32
# print(s1.num) # 32
# s1.listen()
# 设置实例属性
s1.name = "zhubiao"
s1.age = 31
# 实例对象.变量的查询顺序
# print(s1.name)
# print(s1.class_name)
# print(s1.name)
# print(s2.name)
# 结论:类属性只能查不能改
print(s1.clsas_name)
s1.clsas_name = "33期"
print(s1.clsas_name)
print(s2.clsas_name)
# 类属性修改
Student.clsas_name = "34期"
print(s1.clsas_name)
print(s2.clsas_name)
# 声明类
class Student(object):
# 类属性
clsas_name = "34期"
num = 30
# 初始化方法: 实例化自动触发 self:实例对象的空间地址
def __init__(self, name, age, sex):
# print("this is 初始化方法!")
# print(id(self))
# print(name,age,sex)
self.name = name
self.age = age
self.sex = sex
def listen(self, course="python"):
print("%s正在听%s课" % (self.name, course))
def homework(self):
print("%s写作业" % self.name)
# 方式1 实例化和属性赋值
# s1 = Student()
# s2 = Student()
#
# s1.name = "潘磊"
# s1.age = 39
# s1.gender = "男"
#
# s2.name = "zhubiao"
# s2.age = 31
# s2.gender = "男"
# 方式2:
s1 = Student("潘磊", 39, "男")
s2 = Student("zhubiao", 31, "男")
# print(s1.name)
# print(s2.age)
# s1.height = "180cm"
# print(s1.height)
# print(s2.height)
# listen: 实例方法
s1.listen()
s2.listen("java")
# 一切皆对象
# 数据类型 : 数字类型 布尔类型 字符串类型 列表 字典 集合 元组
s = "hello yuan"
s2 = str("hello yuan")
print(s2, type(s2))
s.upper()
l = [1, 2, 3]
l2 = list([2, 3, 4])
print(l2, type(l2))
l2.append(5)
# 扩展案例
class Weapon(object):
def __init__(self, name, color, attack):
self.name = name
self.color = color
self.attack = attack
class Hero(object):
def __init__(self, name, hp, weapon, level=2, exp=2000, money=10000):
self.name = name
self.hp = hp
self.weapon = weapon
self.level = level
self.exp = exp
self.money = money
w1 = Weapon("弓箭", "黄色", 180)
yuan = Hero("yuan", 100, w1)
print(yuan.weapon)
# 声明类
class Student(object):
# 类属性
clsas_name = "34期"
num = 30
listen = 100
# 方法
def listen(self):
print("听课")
def homework(self):
print("写作业")
print(Student.clsas_name)
Student.clsas_name = "xxx"
s1 = Student()
print(s1.clsas_name)
# s1.listen = 100
s1.listen()
class Utils2(object):
class_num = 30
# 静态方法
@staticmethod
def add(x, y):
return x + y
@staticmethod
def sub(x, y):
return x - y
# 类方法
@classmethod
def add_class_num(cls): # cls: 当前类对象
# print(id(cls),id(Utils))
cls.class_num += 1
def add_class_num2(self): # cls: 当前类对象
Utils2.class_num += 1
# 实例对象调用静态方法
u = Utils2()
# print(u.add(2, 3))
# 类对象调用静态方法
# u = Utils.add(6, 7)
# print(u)
# 类方法
Utils2.add_class_num()
print(Utils2.class_num)
u.add_class_num2()
print(u.class_num)
class Animal(object):
def eat(self):
print("吃")
def sleep(self):
print("睡着了...")
class Dog(Animal):
# 覆盖父类方法
def sleep(self):
# 引用父类方法
super().sleep()
print("仰天大睡")
def bark(self):
print("狂吠")
class Cat(Animal):
def climetree(self):
print("爬树")
d1 = Dog()
d1.sleep()
# d1.eat()
# c1 = Cat()
# c1.sleep()
class Animal(object):
def eat(self):
print("吃")
def sleep(self):
print("睡着了...")
class Fly(object):
def fly(self):
print("飞")
class Dog(Animal):
# 覆盖父类方法
def sleep(self):
# 引用父类方法
super().sleep()
print("仰天大睡")
def bark(self):
print("狂吠")
class Bat(Animal, Fly):
def __init__(self, name, age):
self.name = name
self.age = age
class LittleBird(Animal, Fly):
pass
b = Bat("bbb",22)
b.fly()
print(type("hello"))
print(type([1, 2, 3]))
print(type(b))
print(isinstance(b, Bat))
print(isinstance(b, LittleBird))
print(isinstance(b, Animal))
print(isinstance(b, Fly))
print(type(b) == Bat)
print(dir(b))
print(b.__dir__())
print(b.__dict__) # {'name': 'bbb', 'age': 22}