目录
一、概述" >一、概述
二、访问类的属性" >二、访问类的属性
  2.1 访问类的属性和方法" >  2.1 访问类的属性和方法
  2.1 修改对象的属性" >  2.1 修改对象的属性
三、私有属性" >三、私有属性
3.1、定义私有属性" >  3.1、定义私有属性
3.2、get的方法访问私有属性" >  3.2、get的方法访问私有属性
3.3 强制访问私有属性" >  3.3 强制访问私有属性
四、总结" >四、总结
首页 后端开发 Python教程 类的简介和属性介绍

类的简介和属性介绍

Jul 21, 2017 pm 02:14 PM
特性

一、概述

1.定义类(class Dog(object))--> 实例化(d = Dog())---> 实例对象(d)

2. __init__() 构造函数

3. self.name = name  类的属性、成员变量

4. def say_hi()   类的方法 、动态属性

二、访问类的属性

class Role(object):
    def __init__(self, name, role, weapon, life_value=100, money=15000):
        self.name = name
        self.role = role
        self.weapon = weapon
        self.life_value = life_value
        self.money = money

    def shot(self):
        print("%s is shooting..." % self.name)

    def got_shot(self):
        print("ah...,%s got shot..." % self.name)

    def buy_gun(self, gun_name):
        print("%s just bought %s" % (self.name,gun_name))


r1 = Role('Alex', 'police', 'AK47')  # 生成一个角色
r2 = Role('Jack', 'terrorist', 'B22')   # 生成一个角色
登录后复制

  

  2.1 访问类的属性和方法

  我们用 实例对象.属性/方法 来访问

r1.shot()    #  调用shot 方法
r2.buy_gun('B13')  # 调用 buy_gun的方法并传参
print(r1.role)   # 打印类的属性

# 输出

Alex is shooting...
Jack just bought B13
police
登录后复制

 

  2.1 修改对象的属性

  在上例中我们为r2这个角色更换了武器,即 B22 --> B13。但实际上我们调用r2这个角色的武器属性是,会发现他的武器没有改变:

r2.buy_gun('B13')
print(r2.weapon)

# 输出
Jack just bought B13
B22       # 可以发现武器依然是 B22
登录后复制

  其实我们可以在购买武器是直接改变对象的属性:

def buy_gun(self, gun_name):
      print("%s just bought %s" % (self.name, gun_name))
      self.weapon = gun_name    # 在方法内改变属性



r2.buy_gun('B13')
print(r2.weapon)

#输出
Jack just bought B13
B13    # 可以发现武器已经改变
登录后复制

  

三、私有属性

  3.1、定义私有属性

  类的属性一旦被定义成私有属性,就不能被外部调用和随意修改。私有属性只能在类是内部使用。

class Person(object):

    def __init__(self, name, job, phone, address):
        self.name = name
        self.job = job
        self.phone = phone
        self.__address = address   # 定义一个私有属性

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person('Bigberg', 'Doctor', '8833421', 'hz')
print(p1.name)
print(p1.__address)   # 访问私有属性

# 输出

Bigberg
  File "G:/python/untitled/study6/类的私有属性.py", line 17, in <module>
    print(p1.__address)
AttributeError: &#39;Person&#39; object has no attribute &#39;__address&#39;
登录后复制

  运行的结果是访问属性name是可以通过的,但是直接访问私有属性 self.__address 报错了。但是如果通过其他的方法,还是可以访问的到的。

  3.2、get的方法访问私有属性

  外部不能直接访问私有属性,但是在类的内部可以访问,所以我们可以定义一个方法来获取私有属性。  

class Person(object):

    def __init__(self, name, job, phone, address):
        self.name = name
        self.job = job
        self.phone = phone
        self.__address = address

    def get_private(self):
        return self.__address

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person(&#39;Bigberg&#39;, &#39;Doctor&#39;, &#39;8833421&#39;, &#39;hz&#39;)
res = p1.get_private()
print(res)

# 输出
hz
登录后复制

  

  3.3 强制访问私有属性

  我们还可以通过一种方法来强制访问私有属性,甚至修改私有属性的值。方法:对象名._类名__属性名。

class Person(object):

    def __init__(self, name, job, phone, address):
        self.name = name
        self.job = job
        self.phone = phone
        self.__address = address

    def get_private(self):
        return self.__address

    def sayhi(self):
        print("hell,%s" % self.name)

p1 = Person(&#39;Bigberg&#39;, &#39;Doctor&#39;, &#39;8833421&#39;, &#39;hz&#39;)

print(p1._Person__address)   # 访问私有属性

print("----change----")
p1._Person__address = &#39;BJ&#39;    # 修改私有属性
print(p1._Person__address)

#输出
hz
----change----
BJ
登录后复制

 

类是简化和优化应用程序的重要工具。
1.继承性:子类沿用父类特征的能力。体现并扩充了面向对象程序设计方法的共享性,使得同类型对象共享数据与程序代码,提高了程序的复用性。父类是可以进一步定义派生新类的类,子类是以其他类为起点,通过更具体的特征定义所建立的新类。
2.多态性:一些关联的类包含同名的方法程序,但方法程序的内容可以不同。调用哪种在运行时根据对象的类确定,同样的 消息被不同的对象接收时可导致不同的行动。
3.抽象性:提取一个类或对象与众不同的特征,而不对该类或对象其他信息进行处理。 

四、总结

1、定义私有属性:self.__private_attr_name = private_attr_name

2、强制访问私有属性:对象名._类名__属性名(d._dog__sex)

3、对外提供只读接口访问:

    def get_sex(self):

      return self.__sex

 

以上是类的简介和属性介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

win7家庭版与win7旗舰版的区别介绍 win7家庭版与win7旗舰版的区别介绍 Jul 12, 2023 pm 08:41 PM

大家都知道win7系统有很多种版本,比如win7旗舰版、win7专业版、win7家庭版等,有不少用户在家庭版和旗舰版之间纠结,不知道选择哪个版本比较好,所以今天小编来跟大家说说win7家庭餐与win7旗舰版的区别介绍,大家一起来看看吧。1、体验不同家庭普通版使您的日常操作变得更快、更简单,可以更快、更方便地访问使用最频繁的程序和文档。家庭高级版让您享有最佳的娱乐体验,可以轻松地欣赏和共享您喜爱的电视节目、照片、视频和音乐。旗舰版集各版本功能之大全,具备Windows7家庭高级版的所有娱乐功能和专

掌握Spring MVC的关键概念:了解这些重要特性 掌握Spring MVC的关键概念:了解这些重要特性 Dec 29, 2023 am 09:14 AM

了解SpringMVC的关键特性:掌握这些重要的概念,需要具体代码示例SpringMVC是一种基于Java的Web应用开发框架,它通过模型-视图-控制器(MVC)的架构模式来帮助开发人员构建灵活可扩展的Web应用程序。了解和掌握SpringMVC的关键特性将使我们能够更加有效地开发和管理我们的Web应用程序。本文将介绍一些SpringMVC的重要概念

选择适用的Go版本,根据需求和特性 选择适用的Go版本,根据需求和特性 Jan 20, 2024 am 09:28 AM

随着互联网的快速发展,编程语言也在不断演化和更新。其中,Go语言作为一种开源的编程语言,在近年来备受关注。Go语言的设计目标是简单、高效、安全且易于开发和部署。它具有高并发、快速编译和内存安全等特性,让它在Web开发、云计算和大数据等领域中有着广泛的运用。然而,目前Go语言也有不同的版本可供选择。在选择合适的Go语言版本时,我们需要考虑需求和特性两个方面。首

Golang中有类似类的面向对象特性吗? Golang中有类似类的面向对象特性吗? Mar 19, 2024 pm 02:51 PM

在Golang(Go语言)中并没有传统意义上的类的概念,但它提供了一种称为结构体的数据类型,通过结构体可以实现类似类的面向对象特性。在本文中,我们将介绍如何使用结构体实现面向对象的特性,并提供具体的代码示例。结构体的定义和使用首先,让我们看一下结构体的定义和使用方式。在Golang中,结构体可以通过type关键字定义,然后在需要的地方使用。结构体中可以包含属

5g的三个特性是什么 5g的三个特性是什么 Dec 09, 2020 am 10:55 AM

5g的三个特性是:1、高速率;在实际应用中,5G网络的速率是4G网络10倍以上。2、低时延;5G网络的时延大约几十毫秒,比人的反应速度还要快。3、广连接;5G网络出现,配合其他技术,将会打造一个全新的万物互联景象。

C++ 函数的类型和特性 C++ 函数的类型和特性 Apr 11, 2024 pm 03:30 PM

C++函数有以下类型:简单函数、const函数、静态函数、虚函数;特性包括:inline函数、默认参数、引用返回、重载函数。例如,calculateArea函数使用π计算给定半径圆的面积,并将其作为输出返回。

java的特性是什么 java的特性是什么 Aug 09, 2023 pm 03:05 PM

java的特性是:1、简单易学;2、面向对象,使得代码更加可重用和可维护;3、平台无关性,能在不同的操作系统上运行;4、内存管理,通过自动垃圾回收机制来管理内存;5、强类型检查,变量在使用之前必须先声明类型;6、安全性,可以防止未经授权的访问和恶意代码的执行;7、多线程支持,能提高程序的性能和响应能力;8、异常处理,可以避免程序崩溃;9、大量的开发库和框架;10、开源生态系统。

掌握Golang中间件的关键特性与应用场景 掌握Golang中间件的关键特性与应用场景 Mar 20, 2024 pm 06:33 PM

Golang作为一门快速、高效的编程语言,在Web开发领域也有着广泛的应用。其中,中间件作为一种重要的设计模式,能够帮助开发者更好地组织、管理代码,提高代码的可重用性和可维护性。本文将介绍Golang中中间件的关键特性和应用场景,并通过具体的代码示例来说明其用法。一、中间件的概念及作用中间件作为一种插入式的组件,位于应用程序的请求-响应处理链中,用

See all articles