Python 学习(5)---类的相关知识整理

Python基础知识大全(适用于全面复习Python语法知识) Python基础知识大全(适用于全面复习基本语法知识) 阅读详情

Python 是一门很灵活、很方便的语言。学起来很顺手,我们可以用它快捷的完成许多实际任务,下面是我学习python的过程中整理的基本知识点。

面向对象的编程是当今最主流的编程思想,类的三大特性:封装、继承、多态是面向对象编程的优势所在,下面是我整理的相关知识点。

# -*- coding:utf-8 -*-
__author__ = 'Microcosm'

print("关于self,它是定位实例化对象的量,类在实例化一个对象的时候,"
      "self就会接收这个对象的地址,作为后续调用类属性和类方法的寻址标志")

print("--------------------封装---------------------")
# 将一类物体抽象成属性和方法的集合体
class Turtle:
    def run(self):
        print("我在努力的爬...")

    def bite(self):
        print("咬死你咬死你...")

    def sleep(self):
        print("睡觉了,晚安,Zzzzz")

turtle = Turtle()
turtle.run()
turtle.bite()
turtle.sleep()

print("================================================")

class Animal:
    def __init__(self,name):
        self.name = name
    def eat(self):
        print("%s 正在吃东西" % self.name)
    def sleep(self):
        print("%s 正在睡觉" % self.name)

a = Animal("小猫")
a.eat()
a.sleep()
b = Animal("小狗")
b.eat()
b.sleep()

print("=================================================")
class Dog:
    name = '小泡泡'
    age = 2
    __legs = 4   # 以双下划线开头的属性或者方法是私有的
    def printName(self):
        print("我叫 %s" % self.name)
    def printAge(self):
        print("我今年 %d 岁" % self.age)
    def getLegs(self):
        return self.__legs

dog = Dog()
dog.printName()
dog.printAge()
dog.name = '狗蛋儿'  # 直接修改属性变量值
dog.printName()
# print dog.__legs   # 访问私有属性,会抛出AttriuteError的异常,但可以用下面这种方式解决
print dog._Dog__legs  # Python实际上只是给私有属性换名了,也就是说这是一种伪私有
print dog.getLegs()

print("--------------------继承---------------------")
import random as r
class Fish:
    def __init__(self):
        self.x = r.randint(0,10)
        self.y = r.randint(0,10)
        print("我的初始位置在(%d,%d)" % (self.x,self.y))
    def move(self):
        self.x += 1
        self.y -= 1
        print("向东北方向移动一步后,我现在在(%d,%d)" % (self.x, self.y))

class GoldFish(Fish):
    pass

class Crop(Fish):
    pass

class Salmon(Fish):
    pass

class Shark(Fish):
    def __init__(self):   # 这里其实改写了父类的方法,也就是覆盖了它,所以不会初始化位置,只有调用父类的方法才行
        Fish.__init__(self)  # 方法一
        # super().__init__()  # 方法二,更常用,对于多重继承,都会自动调用父类的构造函数,好像是Python3的语法
        self.hungry = True
    def eat(self):
        if self.hungry:
            print("我正在吃东西^_^")
            self.hungry = False
        else:
            print("太撑了,我吃不下了!")

fish = Fish()
fish.move()
goldfish = GoldFish()
goldfish.move()
shark = Shark()
shark.move()
shark.eat()
shark.eat()
print("=================================================")
class A:
    def foo(self):
        print("我是小A")

class B:
    def foo(self):
        print("我是小B")
    def foo2(self):
        print("我是小小B")

class C(A,B):    # 多重继承
    def foo2(self):
        print("我是小C")

a = A()
a.foo()
b = B()
b.foo()
c = C()
c.foo()   # 同名的父类函数,按照继承的顺序调用
c.foo2()  # 子类的方法与父类同名时,会调动子类的方法

print("--------------------组合---------------------")
print("当几个对象之间的关系是横向而不是纵向时,则不适宜使用继承关系,应该使用组合关系")
class Fish:
    def __init__(self,x):
        self.x = x

class Turtle:
    def __init__(self,x):
        self.x = x

class Pool:
    def __init__(self,x,y):     # 将其他类的对象作为该类的属性
        self.turtle = Turtle(x)
        self.fish = Fish(y)
        print("水池里总共有 %d 只乌龟和 %d 条鱼" %(self.turtle.x, self.fish.x))

pool = Pool(1,10)

print("--------------------多态---------------------")
print("不同的类对象调用同一个函数方法,可以有各自不同的实现,这就叫做多态,"
      "就像不同的动物有各自行走的方式一样")
class Turtle:
    def run(self):
        print("A turtle is running!")

class Dog:
    def run(self):
        print("A dog is running!")

class Cat:
    def run(self):
        print("A cat is running!")
t = Turtle()
t.run()
d = Dog()
d.run()
c = Cat()
c.run()

print("---------------------------类、类对象、实例对象------------------------------")
class C:
    count = 0

a = C()
b = C()
print a.count   # 0
print b.count   # 0
c = C()
c.count += 10
print c.count   # 10
print a.count   # 0
C.count = 100      # 静态变量,直到程序退出才会清空
print a.count   # 100
print b.count   # 100
print c.count   # 10
del C      # 删除类
print a.count   # 100
#print C.count   # 抛出NameError的异常
print c.count   # 10

print("==========================================")
class A:
    def x(self):
        print("X-man")

a = A()
a.x()
a.x = 1  # 添加一个属性覆盖了类的方法
# a.x()  # 抛出TypeError的异常

print("============================================")
class BB:
    def printBB(self):   # 这个版本的Python好像不能创建静态方法,例如: def printBB(): 就会报错
        print("no zuo no die")

BB.printBB(BB())  # 这种方式也可以
BB().printBB()

print("=============================================")
class CC:
    age = 1
    def setXY(self,x,y):
        self.x = x   # 实例属性,与实例对象绑定
        self.y = y
    def printXY(self):
        print(self.x,self.y)

print CC.age       # 静态属性,可以用类名直接调用修改
dd = CC()
print dd.__dict__  # 查看实例对象的属性,发现dd是没有任何属性的
print CC.__dict__  # 查看类的属性
dd.setXY(4,5)
print dd.__dict__  # {'y': 5, 'x': 4} 这个属性只有dd这个实例对象有,这主要归功于类对象的绑定
print CC.__dict__
del CC  # 删除类对象
#ee = CC()   # 抛出NameError异常
dd.printXY() # 但是实例对象dd依然可以调用类的方法,
             # 主要是因为类的属性和方法都是静态的,一直都在内存中,只有当程序退出时才会清空

print("=================与类相关的一些BIF===================")
# issubclass(class,classinfo) 判断class 是否是 classinfo 的子类
class A:
    pass

class B(A):
    pass

class C:
    pass

print issubclass(B,A)
print issubclass(B,B)   # 通常一个类被认为是自己的子类
print issubclass(B,C)
print issubclass(B,object)  # 这个版本返回值是False
print issubclass(B,(A,C))   # True
print("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-")
# isinstance(object,classinfo) 判断object 是否是 classinfo 的实例
b1 = B()
print isinstance(b1,B)  # True
print isinstance(b1,A)  # True B是A的子烈
print isinstance(b1,C)  # False
print isinstance(b1,(A,B,C))  # 只有b1是后面类中某一个的实例就返回True

print("=======================================")
# hasattr(object,name)  判断实例对象有没有name属性
class C:
    def __init__(self,x=0):
        self.x = x

c = C()
print hasattr(c,'x')
#print hasattr(c,x) #是错误的

# getattr(object,name,default) 获取name属性的值,如果不存在,则打印default提示信息
print getattr(c,'x')
#print getattr(c,'y')  # 会抛出一个AttributeError的异常
print getattr(c,'y','你访问的属性不存在')  # 没有异常,输出提示信息,用户体验好

# setattr(object,name,value) 设置name属性,并给它赋值为value
setattr(c,'y','hello')
print getattr(c,'y','你访问的属性不存在')

# delattr(object,name) 删除name属性
delattr(c,'y')
print getattr(c,'y','你访问的属性不存在')
# delattr(c,'y')  # 已经被删除,会抛出AttributeError的异常

print("------------------property----------------------------")
# property(fget=None,fset=None,fdel=None,doc=None)
class D:
    def __init__(self,size=10):
        self.size = size
    def getSize(self):
        return self.size
    def setSize(self,size):
        self.size = size
    def delSize(self):
        del self.size
    x = property(getSize,setSize,delSize)      # 好像不起作用,难道是版本的问题!!!!????

c = D()
print c.getSize()
print c.x   # 10
c.x = 18
print c.x
print c.getSize()  # 10
print c.size   # 10
c.setSize(19)
print c.getSize()
print c.size
print c.x  # 18

del c.x
print c.size
print c.x

Python基础知识整理笔记 文本书写 .title()首写字母大写 .upper()全部大写 .lower()全部小写 \n空格 \t换行 列表元素处理 .lstrip()清除字符串开头的空白 .rstrip()清除字符串结尾的空白 .strip()清除字符串所有多余的空白 ** 两个乘号代表乘方运算 str()字符串 []列 print(变量[0])第一个元素 print(变量[-1])访问列表最后一个元素 以此类推 .... 阅读详情

相关推荐

[机器学习]Python基础知识笔记整理

源码地址 笔记源码下载地址 机器学习,深度学习,图像处理,NLP技术笔记地址 Rust,Go,Python,JavaScript,C/C++实现的leetCode,练习算法,总结算法,应用算法 包含了C/C++,Go,Python,Rust,JavaScript数据结构,算法等相关知识总结,以实际项目中遇到的问题 编程语言记录,Rust语言,Go语言,Python语言,Lua语言,C/C++…基...

图解AI 5771

python 类的相关知识

使用class关键字来定义一个类。类名通常使用大写字母开头的驼峰式命名。类可以包含属性(变量)和方法(函数)

2401_83606037的博客 1737

开关电源|控制方式PWM、PFM、混合调制

频率调制器根据误差放大器的输出大小来改变方波信号的频率,若负载电流突然增加,输出电压 Vout随之下降,反馈电压 VFB 减小,此时误 差放大器的输出增高,频率调制器输出方波信号的频率增大,增加电感充电次数;若负载电流突然增加,输出电压Vom随之下降,反馈电压Vr减小,此时误差放大器的输出增高,PWM比较器输出方波信号的占空比增大,增加电感充电时间:若负载电流突然下降,PWM比较器输出方波信号的占空比减小,减少电感充电时间,从而稳定输出电压。它是在固定开关频率下,通过改变脉冲宽度来调节占空比的。

weixin_46969363的博客 1万+

python关于类的一些知识

之前很少写过面向对象编程,所以很多概念当时学的时候了解,但是不久就忘了。现在自己重新整理一下比较重要的概念。 1,__init__这是python里面比较特殊的方法,在定义类后,如果加上了__init__方法那么在创建实例的时候需要把__init__需要的属性跟着传进来。 class Student(object): def __init__(self, name, score): self.name = name self.score = score

m0_51356156的博客 175

步进电机

步进电机

happygrilclh的博客 2140

告别Link180!在Ansys Mechanical 2020R2中正确启用Cable280绳索单元(附Beta选项开启指南)

本文详细介绍了在Ansys Mechanical 2020R2中启用Cable280绳索单元的全过程,包括Beta选项的开启步骤、建模技巧及高阶应用。Cable280作为专为绳索仿真设计的单元,相比传统的Link180单元,在大变形模拟和计算效率上表现更优,特别适合斜拉桥、电梯牵引绳等工程场景。

weixin_33711647的博客 405

读懂python中的self

神奇的self: 在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。 class是面向对象的设计思想,instance(也即是 object,对象)是根据 class 创建的 一个类(class)应该包含 数据 和 操作数据的方法,通俗来讲就是 属性 和 函数(即...

xrinosvip的博客 15万+

Temporal Fusion Transformer(TFT)与扩散模型融合:时间序列预测新范式

本文探讨了Temporal Fusion Transformer(TFT)与扩散模型融合的时间序列预测新范式。该融合方案利用TFT强大的特征提取与可解释性,为扩散模型提供精准的“导航图”,从而在噪声数据中实现鲁棒预测,并原生支持不确定性量化,输出完整的概率分布与置信区间,为金融、能源等领域的风险决策提供更可靠的依据。

weixin_29096377的博客 289

以下python代码的输出是什么_千万不要错过这几道Python面试题

原标题:千万不要错过这几道Python面试题文末扫码领【python基础知识思维导图】作者:梦想橡皮擦来源:优快云话不多说,直接上题。1第一题【修改以下Python代码,使得下面的代码调用类A的show方法?】原始代码:classA(object):defrun(self):print( "基础 run 方法")classB(A):defrun(self):print( "衍生 run 方法 "...

weixin_34213766的博客 939

外骨骼机器人(二):自适应振荡器

振荡器是一种数学工具,可以用于实时跟踪、预测类周期信号的频率、相位、幅值等,而助行外骨骼机器人需要自动适应人体的行走频率、幅度,两者相结合,就能使助行外骨骼机器人拥有更舒适、更自然的行走步态。 ......

行者无疆的博客 4264

下载igv报错:Error loading genome hg38raw.githubusercontent.com...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 988

Python 学习(5)---类的相关知识整理(续)

Python 是一门很灵活、很方便的语言。学起来很顺手,我们可以用它快捷的完成许多实际任务,下面是我学习python的过程中整理的基本知识点。 面向对象的编程是当今最主流的编程思想,类的三大特性:封装、继承、多态是面向对象编程的优势所在,下面是我整理的相关知识点。 类的魔法方法: # -*- coding:utf-8 -*- __author__ = 'Microcosm' pri

FireMicrocosm的专栏 857

【Simulink教程案例7】基于Simulink的滑模控制器设计与实现

欢迎订阅滑膜控制是一种变结构控制策略,其和常规控制方法的主要区别在于控制的不连续性,即一种使系统结构随时间变化的开关特性。所以,滑膜控制器也叫做变结构控制器,其本质是一类特殊的非线性控制器,并且这种非线性为不连续性。滑膜控制器和其他控制方式最大的区别在于其结构的不固定性,在其工作过程中,系统当前的状态会发生变化,使得系统按照预先设置的“滑动模态”的状态轨迹运动。正是由于这个特点,滑膜控制器具有快速响应的优点。滑模控制的基本定义如下所示:1).穿越切换面上的某个点;2).从切换面上的某个点离开;

FPGA/MATLAB学习教程/源码/项目合作开发 3240

Python知识点整理【语法】

本篇内容从《Python编程 从入门到实践》整理而来。 1.列表 列表是有序的集合,访问列表元素只需要给出该元素的位置或者索引就可以了。 列表的索引是从0开始的。索引可以为负,最后一个元素的索引为-1, 类似地,倒数第二个元素索引为-2. 在列表末尾添加元素,用append()方法; 在列表中间加入元素,用insert()方法,需要指定新元素的索引和值。 在列表末尾删除元素,用pop()方法; ...

吾将上下而求索 8062

第39步 深度学习图像识别:Inception V3建模(Tensorflow)

第39步 深度学习图像识别:Inception V3建模(Tensorflow)

Jet4505的博客 3168

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

5年Python整理全面Python学习路线 (附自我整理资料)

本文主要涵盖了 Python 编程的核心知识(暂不包括标准库及第三方库)。 首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合),条件&循环,文件对象,错误&异常,函数,模块,面向对象编程; 接着,结合这些思维导图主要参考的资料,分享一下我的学习体验,一方面可供初学者参考,另一方面,也便于大家结合思维导图深入学习、理解、思考...

8003

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python 类的知识点整理

在这里,命名约定很有用:通常可认为首字母大写的名称(如Dog)指的是类,而小写的名称(如my_dog)指的是根据类创建的实例。以 self 为前缀的变量可提供类中的所有方法使用,可以通过类的任何实例来访问。面向对象编程时是最有效的软件编写方法 之一,在面向对象编程中,我们编写表示现实世界中事务和情景的类,并基于这些类来创建对象。前面学到的有关函数的一切都适用于方法,唯一重要的差别是调用方法的方式。的两边都有两个下划线,否则当使用类来创建实例时,将不会自动调用这个方法,进而引发难以发现的错误。

m0_60591287的博客 751

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

整理了一份 Python 学习知识图谱

做公众号以来和很多初学 Python 的粉丝交流过,发现不少人遇到的困惑主要集中在下面这 3类:1、「基础不牢」类型:最近在自学数据分析,发现自己的 Python 基础太...

苏克的博客 1万+

Python 知识点超全学习笔记整理

整理了Python基础知识的学习笔记

tomatoin的博客 4839

python类的知识点整理

Python它是一种直译式,面向对象,解释式的脚本语言python源码库。它和Java,C/C++,Go语言一样都是高级语言,但由于它是解释式语言,所以运行速度会比Java,C/C++等语言慢(虽说隔壁Go也是解释式语言,但比它快很多)。不过任何事物有利也有弊,Python因为自身携带了许多库(如:OS、TCP、Urllib、Trutle),语法简单,第三库也有很多(如飞机大战所需的pygame),所以被称为胶水语言,同时也深受开发者青眯。Python之父:Guido van Rossum,荷兰人。

a159900的博客 1006

python 类与对象相关知识简记

简单记录一下python对象相关的知识

well_fly的博客 1262

python相关问题整理

Python相关问题涉及多个方面,包括基础知识、进阶概念、实践应用以及常见问题等

Q18600000000的博客 1364

Python全方向学习路径知识体系整理

5、函数:函数的调用、简单函数的定义、函数的返回值、传递参数、关键字参数、默认参数、不定长参数、匿名函数、装饰器、偏函数、回调函数、变量的作用域、递归函数、目录遍历、递归遍历目录、栈模拟递归遍历目录(深度遍历)、队列模拟递归遍历目录(广度遍历)等。2、运算符与表达式:关键字和标识符、算术运算符、python数据类型、赋值运算符、运算符、复合运算符、条件控制语句(if…模板与表单、数据库的使用、单元测试、第三方扩展与部署、Redis缓存使用、GIT版本控制、云服务器的使用、验证码的收发、网站项目开发实战。

Trb201013的博客 1466

[总章]python知识整理

知识整理:整理python相关知识,包括不限于python基础的关键字。随着我的学习步伐,会同步更新更多的东西

学者Miles 1185

【python 学习知识整理】

本文是平时进行自动化测试时学习与工作时的知识整理。如有不对之处请帮忙指正。

fflush_stdin的博客 2772
上一篇: Python+OpenCV学习(20)---对极几何
下一篇: Python 学习(5)---类的相关知识整理(续)
FireMicrocosm
博客等级 码龄12年 261粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值