Python基础学习六:对象,类属性

6.1 面向对象编程

① 编程的方式:

    面向过程:根据业务逻辑从上到下写垒代码

    函数式:将某功能代码封装到函数中,日后便无须重复编写,仅调用函数即可、

    面向对象:对函数进行分类和封装,让开发“更快更好更强”

面向对象编程的两个非常重要的概念:类和对象

类是对象的类型,具有相同属性和行为事务的统称。类是抽象的,在使用的时候通常会找到这个类的一个具体存在。

② 定义类:

    类(Class):用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

    类的名称:类型

    属性:对象的属性

    方法:对象的方法

③ 类的属性分类

    类属性

    实例属性

    类变量:类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体外,类变量通常不作为实例变量使用,如果需要用在函数中使用:类名.类属性

    实例变量:定义在方法中的变量,只作用于当前实例的类。

6.2 _init_()构造方法和self

    _init_()是一个特殊的方法属于类的专有方法,被称为类的构造函数或初始化方法,方法的前面和后面都有两个下划线。

    这是为了避免python默认方法和普通方法发生名称的冲突,每当创建类的实例化对象的时候,_init_()方法都会默认被运行,作用就是初始化已实例化后的对象

    在方法定义中,第一个参数self是比不可少的,类的方法和普通的函数的区别就是self,self并不是Pyhon的关键字,完全可以用其他单词取代,只是按照惯例和标准的规定,推荐使用self。

6.3 针对类的属性的一些方法

可以使用实例化对象名+.来访问对象的属性,亦可以使用一下函数的方式来访问属性

getattr(obj, name[, default]):访问对象的属性

hasattr(obj,name):检查是否存在一个属性

setattr(obj,name,value):设置一个属性,如果属性不存在,会创建一个新属性

delattr(obj,name):删除属性

注意:name需要加单引号,obj为实例化对象名称

6.4 python内置类属性

__dict__:类的属性(包含一个字典,由类的属性名:值组成)实例化类名._dict_

__doc__:类的文档字符串 (类名.)实例化类名._doc_

__name__:类名,实现方式 类名.__name__,r如果是放在Modules模块中,就表示模块的名字:如果是放在Classs类中,就表示类的名字;

__bases__:类的所有父类构成元素(包含了一个由所有父类组成的元组)

__main__:模块,xxx.py文件本身被执行时,对应的模块名就是__main__了

可以在if__name___ == "__main__"中添加你自己想要的,对于测试模块,演示模块用法等代码。作为模块,被别的Python程序导入(import)时,模块名就是本身文件名xxx了。

数据成员:类变量或者实例变量(方法中的变量)用于处理类及其实例对象的相关的数据。

方法重写:如果从父类继承的方法不能满足子类的要求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实例变量:定义在方法中的变量,只作用于当前实例的类

"""
    类定义
    class 类名():
        # 类文档说明
        属性
        方法
"""
class person():
    """
        这是一个类
    """
    # 实例属性通过构造方法来声明
    # self不是关键字,代表的是当前这个对象
    country = '中国'          # 声明一个国籍类

    def __init__(self, name, age, sex):  # 构造方法
        #  构造方法不需要调用,在实例化的时候自动调用
       print('我是构造方法,在实例化的时候调用')
       self.name = name # 通过self 创建实例属性,并且复制
       self.age = age
       self.sex = sex

    # 创建普通方法
    def getName(self):
        print('我的名字叫: %s,我来自%s' % (self.name, person.country))  # 在方法中使用实例属性
# 实例化对象
people01 = person('joe', 19, '男')   # 在实例化的时候传递参数

这个people01 就要有三个属性,并且可以使用getName方法

访问属性

print(people01.name)        # 通过对象名.属性名 访问实例属性(对象属性)
print(people01.age)
print(people01.sex)

 通过内置方法访问属性

print(getattr(people01, 'name'))
print(hasattr(people01, 'name'))
setattr(people01, 'name', 'susan')
print(people01.name)

delattr(people01, 'name')
print(people01.name)

 通过对象调用实例方法

people01.getName()
"""
    内置类属性
"""
print(people01.__dict__)  # 会将实例对象的属性和值通过字典的形式返回
# print(people01.__doc__)
print(person
      .__name__)     # 返回类名
print(person.__bases__)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习 Python 面向对象编程需要掌握以下几个方面: 1. 理解类和对象的概念:类是一种模板或者蓝图,用来定义对象属性和方法,而对象则是类的实例。理解类和对象之间的关系,以及如何定义类和创建对象学习 Python 面向对象编程的基础。 2. 熟悉类的属性和方法:类的属性是描述对象特征的变量,而类的方法是描述对象行为的函数。了解如何定义和使用类的属性和方法是学习 Python 面向对象编程的关键。 3. 理解继承和多态的概念:继承是一种重用代码的方式,它允许派生类继承基类的属性和方法。多态是一种能力,允许不同对象对相同的消息作出不同的响应。理解继承和多态是学习 Python 面向对象编程的高级话题。 4. 熟练掌握 Python 面向对象编程的语法:学习 Python 面向对象编程需要熟悉类的定义、属性和方法的访问、继承、多态等语法。需要多写代码练习,加深理解。 5. 阅读优秀的 Python 面向对象编程的代码:阅读优秀的 Python 面向对象编程的代码可以让你了解 Python 面向对象编程的最佳实践和设计模式。 总之,要学习 Python 面向对象编程,需要理解类和对象属性和方法、继承和多态的概念,熟练掌握 Python 面向对象编程的语法,同时不断练习和阅读优秀的代码。 ### 回答2: 学习Python面向对象编程首先需要了解面向对象的概念和原则。面向对象是一种编程范式,它将数据和操作数据的代码封装在一起,以实现模块化、可重用的代码。 在学习Python面向对象编程之前,需要先掌握Python的基本语法、数据类型和函数。接下来,可以按照以下步骤学习面向对象编程: 1. 了解类和对象:类是用来创建对象的模板,而对象则是类的实例。学习如何定义类以及如何创建和使用对象,可以通过阅读相关的Python教程和文档来掌握。 2. 学习封装和继承:封装是将数据和对数据的操作封装在一起,以实现信息隐藏和代码复用;而继承是通过创建一个新的类来继承已有类的属性和方法。通过使用封装和继承,可以提高代码的可维护性和可扩展性。 3. 掌握类的特殊方法:在Python中,类可以定义一些特殊方法,例如__init__()用于初始化对象、__str__()用于返回对象的字符串表示等。了解和使用这些特殊方法,可以让类的行为更加符合预期。 4. 学习多态:多态是面向对象编程的重要特性之一,它允许不同的对象对相同的消息做出不同的响应。学习多态可以提高代码的灵活性和可维护性。 5. 进一步练习:通过编写实际的程序来巩固所学的知识。可以从简单的小项目开始,逐渐增加难度和复杂性。 此外,还可以参考其他编程语言的面向对象编程的教程和资料,以扩大对面向对象编程的理解。 总之,学习Python面向对象编程需要勤于练习和实践,通过不断的编码和思考,才能真正掌握和应用面向对象编程的技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值