Python的学习-9-面向对象一

面向对象编程

面向对象 编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更接近人的思维。
Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承,多态,封装等。

注:Python支持面向过程,面向对象,函数式编程等多种编程方式。

类的定义

类可以看作是一切实体的抽象,而某个具体对象(实例)则是该抽象的实体化。
在这里插入图片描述

类的创建和使用

class Dog():
    def __init__(self,name,age):
        """初始化属性name和age"""
        self.name = name
        self.age = age

    def sit(self):
        print(self.name.title()+" is now sitting.")

    def roll_over(self):
        print(self.name.title()+" is now rolling.")
my_dog = Dog('rain',19)
my_dog.sit()
my_dog.roll_over()
my_dog.kind = "金毛"#如果要操作的变量在初始化的时候不存在,那么就会在实例对象的对象区域中添加新变量
print(my_dog.kind)
  1. 方法__init__()。这是一个特殊的方法,当我们根据类创建新实例的时候,Python会自动运行这个方法的内容。(可以理解为java中的构造函数)
  2. self的意义:在__init__()中,形参self必不可少且必须位于参数列表的第一个。为什么必须在方法定义中包含self呢?Python在调用__init__()方法来创建实例的时候,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它指向实例本身的引用,让实例能够访问类中的属性和方法。
  3. 例子中定义的两个方法都有前缀self。以self为前缀的变量都可供类中的所有方法使用,也可以通过类的任何实例来访问这些变量。self.name = name获取存储在形参name中的值,并将其存储到变量name中,然后该变量被关联到当前创建的实例。

实例属性

实例属性是从属于实例对象的属性,也称为“实例变量”。

  1. 实例属性一般在__init__()方法中通过如下代码定义:
    self.实例属性名 = 初始值
  2. 在本类的其他实例方法中,也是通过self进行访问实例变量
    self.实例属性名
  3. 创建实例对象后,通过实例对象访问该实例的变量:
    obj01 = 类名() #创建对象,init()初始化属性
    obj01.实例属性名 = 值

实例方法

实例犯法是从属于实例对象的方法。
实例方法的定义格式如下:

def 方法名(self,形参列表):
	"""函数体"""

方法的调用格式: 对象.方法名(实参列表)
要点:

  1. 定义实例方法时,第一个参数必须为self
  2. 调用实例方法时,不需要也不能给self传参。self由解释器自动传参。

函数和方法的区别:

  1. 都是用于完成一个功能的语句块,本质一样
  2. 方法调用时,通过对象来调用。方法从属于特定实例对象。
  3. 直观上,方法定义时需要传递self,函数不需要
    方法调用的本质
    在这里插入图片描述
其他操作
  1. dir(obj)可以获得对象的所有属性,方法
  2. obj.dict 对象的属性字典
  3. pass 空语句
  4. isinstance(对象,类型) 判断对象是不是指定类型

类对象

当解释器执行class语句时,会创建一个类对象。

class Student:
	pass
print(type(Student))
print(id(Student))
stu = Student
s1 = stu()#创建实例对象
print(s1)

实际上生成了一个变量名就是类名"Student"的对象。我们通过赋值把新变量名stu指向类名"Studeng",这时候通过Student和stu创建的对象具有相同效果。

类属性

类属性就是从属于“类对象”的属性,也成为“类变量”。类属性从属于类对象,可以被所有实例对象共享
类属性在python执行class语句之后创建类对象就同时完成初始化,而实例属性需要在创建实例时才完成初始化。
类属性的定义方式:

class  类名 :
	类变量名 = 初始值 #类变量名必须放在__init__()初始化方法之前

在类中或者类的外卖呢,我么你可以通过:“类名.类变量名”来读写,实例可以直接“实例名.类变量名”来读写。

class Student:
    school = "University"  # 类属性
    count = 0  # 类属性

    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 魔术方法是Python中的特殊方法,它们以双下划线开头和结尾,例如__init__、__str__、__add__等。这些方法可以在类的实例化、运算符重载、属性访问等方面提供特殊的行为。 __init__方法是一个特殊的构造函数,用于初始化类的实例。__str__方法用于返回对象的字符串表示形式,可以通过print函数输出。__add__方法用于重载加法运算符,可以实现自定义的加法操作。其他常用的魔术方法还包括__eq__、__lt__、__gt__等,用于比较运算符的重载。 学习魔术方法可以让我们更好地理解Python面向对象编程的特性,提高代码的可读性和可维护性。 ### 回答2: 魔术方法是Python中最有趣且也是最强大的概念之一。魔术方法(也称为特殊方法或双下划线方法)是一些特殊的方法,它们以双下划线(__)开头和结尾,并具有特定的名称。 这些特殊方法可以为我们提供许多有用的功能,例如重载操作符,处理类的属性,实现自定义迭代器,使用描述符等。 下面是一些常见的魔术方法: __init__:这是最常见的魔术方法。当创建一个实例时,它会被自动调用。它用于初始化对象的属性。 __str__:当你想要将一个对象转换成字符串时,这个方法会被调用。如果你不指定__str__方法,Python默认会使用对象的类名和内存地址来表示对象。 __repr__:这个方法和__str__方法类似,也是用于将对象转换成字符串。但是__repr__方法在调试时有很大的作用,因为它返回的字符串可以用来唯一地标识对象。 __len__:这个方法可以返回对象的长度。例如,如果你想获取一个字符串的长度,你可以使用len("hello"),在底层,它实际上是调用了字符串对象的__len__方法。 __getattr__和__setattr__:这些方法允许你动态地获取和设置对象的属性。当你访问一个不存在的属性时,__getattr__方法会被调用。当你设置一个属性时,__setattr__方法会被调用。 __call__:这个方法允许你将对象作为函数调用。当你调用一个对象时,Python实际上是在调用对象的__call__方法。 除了上面列举的方法,还有许多其他的魔术方法,例如__cmp__,__hash__,__iter__等等。学习这些魔术方法将使你能够更好地理解Python面向对象编程模型。 总之,学习和理解魔术方法是Python面向对象编程中的一个关键概念,因为它们可以帮助你实现更加灵活和强大的代码。如果你想成为一名Python高手,那么深入学习魔术方法是不可避免的。 ### 回答3: Python中的“魔术方法”指的是每个类中定义的特殊方法,它们以双下划线(__)开头和结尾,并且有着特定的用途。通过使用这些魔法方法,我们可以自定义类的行为,并为程序提供更高级别的功能。 以下是Python中常用的一些魔术方法: 1. __init__:这是最常用的魔术方法之一,它用于初始化一个类的对象,以及定义类的属性和方法。 2. __str__:此方法用于返回对象的字符串表示形式,类似于Java中的toString()方法。 3. __repr__:与__str__类似,但是返回的是对象的“官方”字符串表示形式,通常用于调试和开发。 4. __getattr__:当试图访问一个不存在的属性时,此方法被调用。 5. __setattr__:当尝试设置类的属性时,此方法被调用。 6. __delattr__:当尝试删除类的属性时,此方法被调用。 7. __call__:将对象作为函数调用时,此方法被调用。 8. __len__:返回对象的长度。 9. __getitem__:允许通过索引访问对象的元素。 10. __setitem__:允许通过索引设置对象的元素。 11. __delitem__:允许通过索引删除对象的元素。 通过了解和使用这些魔术方法,我们可以编写出更高效、更灵活、更具可读性的Python代码,并且实现类似于内置类型一样的功能。例如,我们可以实现一个自定义列表,类似于Python的list类型,然后使用上述魔术方法来访问、设置和删除元素。同时,我们还可以自定义变量和函数的行为,使我们的Python代码变得更具有表现力和弹性。 总之,了解和掌握Python的魔术方法是Python编程中必不可少的一部分,对于理解和编写实际应用程序非常有价值。在实践中,我们可以根据实际情况选择恰当的魔术方法,从而创建更灵活、更高效的Python类。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值