Python-类属性、实例属性、面向对象的特征

PTA6(python) python程序设计06-面向对象7-1 求两点之间距离7-2 的定义和使用7-3 优异生查询(和对象)7-4 新型计算器7-5 学生的使用7-6 三维向量运算7-7 继承应用7-8 有关队列操作7-9 有关堆栈操作7-10 宿舍谁最高 7-1 求两点之间距离 定义一个Point,有两个数据成员:x和y, 分别代表x坐标和y坐标,并有若干成员函数。 定义一个函数Distance(), 用于求两点之间的距离。 输入格式: 输入有两行: 第一行是第一个点的x坐标和y坐标; 第二行是第二个点的x坐标和y 阅读详情

类属性、实例属性

类属性:

在类的属性中,分为公有类属性和私有类属性
公有类属性:所有对象都可访问
私有类属性:只能在类内部访问,不能通过实例对象访问

class Person(object):
    name = "flyflywin" #公有类属性
    __age = 24 #私有类属性

    def age(self):
        self.__age = 20
        print(self.__age)
fly = Person()
#Person.name = "andy"
#del Person.name
#fly.name = "jack"
#del fly.name  #删除实例属性
print(fly.name)
fly.age()
print(Person.name)

实例属性(对象属性):

通过实例(对象)去修改类属性:
del()方法
创建对象后,Python解释器默认调用__init__()方法。当删除一个对象时,Python解释器也会默认调用一个方法,这个方法为__del__()方法。在Python中,对于开发者来说很少会直接销毁对象(如果需要,应该使用del关键字销毁)。Python的内存管理机制能够很好的胜任这份工作。也就是说,不管是手动调用del还是由Python自动回收都会触发__del__方法执行。

class Person(object):
    def __init__(self,name):
        self.name = name
    def __del__(self):
        print("实例对象%s"%self.name,id(self))
        print("python解释器开始回收%s对象了"%self.name)


print("类对象",id(Person))
zhangsan = Person("张三")
print("实例对象张三:",id(zhangsan))

print("-"*50)
lisi = Person("李四")
print("实例对象李四:",id(lisi))
#如果还是不清晰,请注释两个del看结果
class Test:
    def __del__(self):
        print("英雄谢幕...")

t = Test()
c = t
del t
del c
print("------------")

面向对象的四大特征

抽象

忽略一个主题中与当前目标无关的东西,专注的注意与当前目标有关的方面.(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口).
抽象并不打算了解全部问题,而是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一个数据抽象,二是过程抽象.
数据抽象 -->表示世界中一类事物的特征,就是对象的属性.比如鸟有翅膀,羽
毛等(类的属性)
过程抽象 -->表示世界中一类事物的行为,就是对象的行为.比如鸟会飞,会叫
(类的方法)

封装

属性,方法----》封装类
有些时候我们不希望把对象的属性公开,就可以把它设为私有,Python并没有像其他语言对成员的权限控制系统,如private,默认情况下,Python的所有属性都是公有的,可以被访问到,要设成私有,则在前面加双下划线。

继承

继承可以使子类拥有父类的属性和方法,并且可以重写这些方法,加强代码的复用性Python中子类可以有多个父类,但是不建议这样使用,一般会产生重复调用的问题,Super().方法名,可以调用父类的方法(不用传参,作用是调用父类的方法,传的是子类实例的值)

多态

多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承,Python里面不依赖继承)。指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式

封装

面向对象三大特征–封装:
面向对象的程序设计中,某个类把所需要的数据(也可以说是类的属性)和对数据的操作(也可以说是类的行为)全部都封装在类中,分别称为类的成员变量和方法(或成员函数)。这种把成员变量和成员函数封装在一起的编程特性称为封装。 ➢ 公有成员变量和私有成员变量:Python中用成员变量的名字来区分是公有成员变量或者是私有成员变量。Python中,以两个下划线‘__’开头的变量都是私有成员变量,而其余的变量都属于公有成员变量。其中,私有的成员变量只能在类的内部访问,而共有的公有的成员变量可以在类的外部进行访问

公有方法和私有方法:

类的方法是对类行为的封装。
类的方法也分为公有方法和私有方法。
类的私有方法只能通过对象名(在类内部也就是self)在类的内部进行访问。
而公有方法可以在类的外部通过对象名进行访问。
同样,公有的成员方法和私有的成员方法也是通过名字来区分的,双下划线‘__’开头的方法是私有成员方法。

私有方法:只能在类的内部进行访问,对象无法访问。
私有属性:提高代码安全性,不允许别人随意修改。

#私有方法
class Test(object):
    def __test2(self):
        print("私有方法__test2")
    def test(self):
        print("普通方法test")
    def _test1(self):
        print("普通方法_test1方法")
        self.__test2()
t = Test()
t.test()
t._test1()
#私有方法应用
class Test(object):
    def __send_msg(self):
        print("正在发送短信")
    def send_msg(self,new_money):
        if new_money >= 10000:
            self.__send_msg()
        else:
            print("余额不足")
t = Test()
t.send_msg(1000)
t.send_msg(10000)

继承

继承的概念:
在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物。

重写父类方法与调用父类方法:
所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法
使用super调用父类的方法:可以直接调用父类方法,不需要通过 父类名.父类方法名 的方式

class Animal:
    def eat(self):
        print("----吃----")
    def drink(self):
        print("----喝----")
    def sleep(self):
        print("----睡觉----")
    def run(self):
        print("----跑----")
class Dog(Animal):
    def call(self):
        print("----旺旺叫----")
class Cat(Animal):
    def call(self):
        print("-----喵喵叫----")
tom = Cat()
tom.eat()
tom.call()
#多层继承
class Animal:
    def eat(self):
        print("----吃----")
    def drink(self):
        print("----喝----")
    def sleep(self):
        print("----睡觉----")
    def run(self):
        print("----跑----")
class Dog(Animal):
    def call(self):
        print("----旺旺叫…………")
class XiaoTq(Dog):
    def fly(self):
        print("----飞----")

dog = XiaoTq()
dog.call()
dog.eat()
dog.fly()
#多层继承
class Base(object):
    def test(self):
        print("---Base---")
class A(Base):
    def test(self):
        print("---A---Test1---")
class B(Base):
    def test(self):
        print("---B---Test2---")
class C(A,B):
    def test(self):
        print("---C----")

c = C()
c.test()
print(C.__mro__)
#可以查看c继承的过程,一般是就近原则
class Animal(object):
    def sayHello(self):
        print("hello---0")

class Cat(Animal):
    def sayHello(self):
        #print("hello---1")
        super().sayHello()

class bsCat(Cat):
    def sayHello(self):
        #print("hello---2")
        super().sayHello() #super调用父类方法

cat = bsCat()
cat.sayHello()

多态

多态的定义:
所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态。
多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。
当子类和父类都存在相同的print_self()方法时,我们说,子类的print_self()覆盖了父类的print_self(),在代码运行的时候,总是会调用子类的print_self()。这样,我们就获得了继承的另一个好处:多态。

#多态
class Dog(object):
    def print_self(self):
        print("大家好,我是x,请大家多多关照!!")

class XiaoTq(Dog):
    def print_self(self):
        print("我是你们的老大,我是哮天犬。")

#定义一个执行函数
def aa(obj):
    obj.print_self()

dog = Dog()
aa(dog)
dog1 = XiaoTq()
aa(dog1)
VMware 虚拟机里连不上网的五种解决方案 在VMware虚拟机里的虚拟机系统连接不上网络 首先,注意查看适配器选项里的网络连接这两个网络连接是否存在,如果不存在可以重新装一下VM 如果存在,连不上网 解决办法一: 虚拟机设置里,找到“网络适配器”,右边的网络连接选择“NAT 模式”,如果不行的话再linux系统。还是不行的话接着看第二种解决方案。 解决方法二: 可能原因是VMware NET Service... 阅读详情

相关推荐

pikachu靶场: 暴力破解第四关(token防爆破)

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个 Token 同时将此 Token 返回给客户端。此外,Token 是有时效的,一段时间之后或下一次请求时用户需要重新验证。

X_shiguang的博客 1685

面向对象学习

一、面向对象三大特征 1、面向对象三大特征封装 面向对象的程序设计中,某个把所需要的数据(也可以说是的属性)和对数据的操作(也可以说是的行为)全部都封装中,分别称为的成员变量和方法(或成员函数)。这种把成员变量和成员函数封装在一起的编程特性称为封装。 (1)公有成员变量和私有成员变量:Python中,以两个下划线‘__’开头的变量都是私有成员变量,而其余的变量都属于公有成员变量...

weixin_30555753的博客 166

python | linux09】类属性实例属性面向对象四大特征

的属性中,分为公有类属性和私有类属性; 公有类属性:所有对象都可访问; 私有类属性:只能在内部访问,不能通过实例对象访问

小鹏linux的博客 796

python _Python 类属性的动态特点

#编程教育#Python是一门动态语言,所以它的属性都是在程序运行过程中动态引入的。一个实例占用的内存大小也是动态变化的。这点和编译性语言是完全不同的。例如C++是一门编译性语言,它在程序运行之前需要经历编译阶段,那么一个实例的内存大小在编译期间就已经确定下来了,并不会在运行期动态变化。下面我们通过一个简单的例子,来讲解一下python类属性的动态特点。1. class base:2. ...

weixin_39876450的博客 173

python 类属性 实例属性 特性

实例属性遮盖的数据属性 class Student: # 学生 height = "student height" # 定义身高属性 >>> xiaoming = Student() # 实例化小明 >>> vars(xiaoming) # vars函数小明obj的__dict__属性,表明没有实例属性 {} >>> xiaoming.height # 读取x

很长很长的专栏 741

Python学习笔记——类属性实例属性

Python学习笔记——类属性实例属性的区别访问特性首先我们以Test为例:class Test(object): #类属性 a = 100 def __init__(self, b): #实例属性 self.b = b t = Test(100)#通过实例化对象访问 类属性print("t.a = %d"%t.a)#通过名访问 类属性p

Leowait的专栏 1万+

Python的特点 (2) :类属性实例属性的关系

测试代码: 1 #encoding:utf-8 2 class Parent(object): 3 x=1 #x是Parent的属性(字段) 4 ls=[1,2] #ls是一个列表,也是Parent的属性(字段) 5 6 class Child1(Parent): 7 y=2 8 9 class Ch...

aaa2549769750的博客 329

Python 类属性实例属性

本节讲解在 Python 中这两个层次上的属性的概念和使用。

很酷的站长的博客 356

python面向对象编程

面向对象编程是一种编程方式,这种编程方式需要使用“对象”来实现 对象的特征: 世间万物皆对象 每个对象都是唯一的 对象具有属性和行为(对象的行为包括具有的功能及具体的实现) 对象具有状态(状态是指某个瞬间对象的各个属性的取值) 对象分为对象和实例对象两大对象是具有相同属性和行为的实例对象的抽象;对象就是实例对象的模板,实例对象是对象创建出来的;此外,同一个对象的所有实例对象如果具有...

holiday0的博客 358

27python_类属性方法

类属性方法 目标 的结构 类属性实例属性 方法和静态方法 01. 的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 使用 名() 创建对象,创建对象 的动作有两步: 在内存中为对象 分配空间 调用初始化方法 __init__ 为 对象初始化 对象创建后,内存 中就有了一个对象的 实实在在 的存在 —— 实例 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DoaPLRyF-1629506627852)(med

weixin_44785193的博客 180

Python类属性方法

类属性方法 目标 的结构 类属性实例属性 方法和静态方法 的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 使用 名() 创建对象,创建对象 的动作有两步: 在内存中为对象 分配空间 调用初始化方法 init 为 对象初始化 对象创建后,内存 中就有了一个对象的 实实在在 的存在 —— 实例 017_的结构示意图I 因此,通常也会把: 创建出来的...

qq_43688472的博客 358

Python定义的属性

Python面向对象编程中,的属性是用来描述和对象的特征和数据的。类属性实例属性。本节将专注于如何定义的属性,并讲解类属性实例属性的区别与用法。的属性是用来存储数据的变量,它们可以在的定义中直接声明。属性的主要作用是让或对象能够存储数据,从而为行为(方法)提供数据支持。在的内部,属性的定义和操作可以使用与普通变量似的语法,但类属性实例属性的定义和作用范围有所不同。类属性是直接在的内部定义的变量,这些属性是由本身持有的,所有对象都共享同一个类属性

分享人工智能领域原创文章 615

Python教程——Python面向对象的属性和方法

Python面向对象编程中,属性和方法是及其对象的重要组成部分。如果说封装、继承和多态面向对象编程中的思想,那么的属性和方法就是骨架,因为有属性和方法,面向对象编程才变的有血有肉。

Gefangenes的博客 1333

python笔记9

面向对象的三大特征的组成,动态绑定对象和方法,权限控制,属性的设置。

Ljt030608的博客 2027

面向对象编程(一)

对象的特征 世间万物皆对象 每个对象都是唯一 对象具有属性和行为 对象具有状态 对象分为对象和实例对象两大 对象是具有相同属性和行为的实例对象的抽象;对象就是实例对象的模板,实例对象是由对象创建出来的。 面向对象编程的大体步骤 抽象出对象 抽象出对象的属性 抽象出对象的行为(方法) 根据对象创建实例对象 通过实例对象访问属性和方法 定义对象的语法格式: class 名...

SSSyria的博客 265

类属性实例属性

类属性实例属性 类属性就是对象所拥有的属性,它被所有对象的实例对象所共有,在内存中只存在一个副本,这个和C++中的静态成员变量有点似。对于公有的类属性,在外可以通过对象和实例对象访问 类属性 class People(object): name = 'Tom' # 公有的类属性 __age = 12 # 私有的类属性 p = People() prin...

晓江的博客 944

python对象的特性_Python对象的思想和特性,python

一、面向对象思想面向对象编程(Object Oriented Programming,简称OOP),是利用“”和“对象”来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因不仅因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。1、面向对象和面向过程面向对象(Object Orien...

weixin_29346059的博客 267

Python课程设计》实验五

@Python课程设计 河南科技大学《Python课程设计》实验五Python 实验目的 1、如何定义一个。 2、了解如何定义的私有数据成员和成员方法。 3、了解如何使用自定义实例化对象。 实验内容 1、 定义一个三维向量,并定义相应的方法实现两个该对象之间的加、减运算(要求支持运算符+、-),实现该对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现)。 2、 编程实现如下功能: (1)定义一个抽象Shape,在抽象 Shape中定义求面积 getArea(

yangleileileilei的博客 2049

大一第四次培训

继承 封装、继承、多态 3 大特性,前面已经详细介绍了 Python 封装,本节继续讲解 Python 的继承机制。 继承机制经常用于创建和现有功能似的新,又或是新只需要在现有基础上添加一些成员(属性和方法),但又不想直接将现有代码复制给新。也就是说,通过使用继承这种机制,可以轻松实现的重复使用。 举个例子,假设现有一个 Shape ,该的 draw() 方法可以在屏幕上画出指定的形状,现在需要创建一个 Form ,要求此不但可以在屏幕上画出指定的形状,还可以计算出所画

weixin_45945399的博客 459

的方法(八)

方法没有重载 方法的动态性 Python是动态语言,我们可以动态的为添加新的方法,或者动态的修改的已有的方法。 class Person: def work(self): print("work") def work2(self): print("work2") Person.work2 = work2 # 方法连接 p = Person() p.work() p.work2() ...

xs520520wmy的博客 294

机器学习(预测模型):智能手机的综合性数据集

数据集是一个关于智能手机的综合性数据集,它为研究人员、数据分析师和相关领域的专业人士提供了丰富的信息资源。该数据集涵盖了众多智能手机品牌和型号的详细参数,为用户提供了全面的设备对比和分析基础。数据集中的信息通常包括智能手机的基本硬件规格,如屏幕尺寸、分辨率、处理器型号、内存容量(RAM)、存储空间(ROM)、电池容量等。这些参数对于评估设备的性能和用户体验至关重要。例如,屏幕分辨率和尺寸直接影响视觉效果,而处理器和内存的配置则决定了设备的运行速度和多任务处理能力。除了硬件规格,数据集还可能包含摄像头参数,如像素、光圈大小、支持的拍摄模式等。摄像头性能是现代智能手机的重要卖点之一,通过这些数据,用户可以比较不同设备在摄影方面的优劣。此外,数据集还可能提供价格信息,帮助用户了解不同配置和品牌智能手机的市场定位。价格数据结合其他硬件参数,可以用于分析性价比,为消费者提供购买建议。数据集的来源可能包括官方产品文档、技术评测网站以及用户反馈等。这些多渠道的数据来源使得数据集具有较高的实用性和参考价值。通过分析这些数据,研究人员可以进行市场趋势研究、消费者行为分析以及技术发展预测等工作。总之,为智能手机领域的研究和分析提供了一个全面且详细的数据基础,无论是对于学术研究、市场调研还是个人决策,都具有重要的参考意义。

上一篇: Python-类和对象
下一篇: Python-MySQL
FlyFlyWin
博客等级 码龄6年 46粉丝 41原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值