Python基础学习14-定义对象和创建实例对象

本文介绍Python中类与对象的基本概念,包括类的定义、实例化过程及如何使用__init__方法进行初始化。通过实例演示了不同情况下实例化对象的方法。

定义类对象

定义类对象的语法格式:

class 类名(object):

    # 属性和方法

其中,

  • 类名由一个或多个单词组合而成,每个单词的首字母大写,且其余字母全部小写,例如:SomeClass(命名规范)
  • (object) 表示该对象继承自Python内置的类对象 object,Python中所有的类对象都继承自一个统一的基类:object

 

创建实例对象

根据类对象创建实例对象的语法格式为:类名([实参])

class SomeClass(object):
    pass

为了在创建实例对象之后,对其进行初始化(例如:给实例对象绑定一些属性),可以在类对象中定义一个名为 __init__ 的特殊方法。这样,创建实例对象之后就会自动调用特殊方法 __init__ 

方法就是定义在类对象中的函数。方法与函数的区别:

  • 定义方法时,方法的第一个形参,表示调用该方法的实例对象,第一个形参的名称通常是 self 
  • 调用方法时,系统自动将调用该方法的实例对象作为实参传递给第一个形参。第一个实参会传递给第二个形参,第二个实参会传递给第三个形参

如果没有定义特殊方法 __init__ ,或者定义了方法 __init__ ,但是没有定义除 self 之外的形参,那么根据类对象创建实例对象时,就不需要传入实参

如果在类对象中定义了特殊方法 __init__ ,那么对于 “类名([实参])” 会执行两大步,1、创建实例对象;2、自动调用创建实例对象的特殊方法 __init__ (创建的实例对象会作为实参被自动传递给特殊方法 __init__ 的第一个形参 self)

class SomeClass(object):
    pass


sc = SomeClass()
print(sc)       # <__main__.SomeClass object at 0x00000249BA03F288>
print(type(sc))     # <class '__main__.SomeClass'>


class SomeClass1(object):
    def __init__(self):
        self.data = 18


sc1 = SomeClass1()
print(sc1)      # <__main__.SomeClass1 object at 0x000002BAA1D36088>


class SomeClass2(object):
    def __init__(self, data1, data2):
        self.data = 18
        self.data1 = data1
        self.data2 = data2


sc2 = SomeClass2(5, 8)
print(sc2)      # <__main__.SomeClass2 object at 0x000001C0166F19C8>

### Python 对象以及面向对象编程基础 #### 什么是? 在 Python 中,是一种用于创建对象的蓝图或模板。通过定义一个,可以描述具有相同属性行为的一组对象的核心思想是将数据(属性)功能(方法)组合在一起,从而实现代码的模块化可重用性[^2]。 #### 如何定义? 可以通过 `class` 关键字来定义一个。下面是一个简单的例子: ```python class Animal: def __init__(self, name, species): self.name = name # 属性 self.species = species # 属性 def make_sound(self): # 方法 pass ``` 在这个例子中,`__init__()` 是一个特殊的方法,称为构造函数。当创建一个新的对象时,这个方法会被自动调用以初始化该对象的属性。 #### 创建对象 一旦定义了一个,就可以基于这个创建具体的对象。例如: ```python dog = Animal("Rex", "Canine") print(dog.name) # 输出: Rex print(dog.species) # 输出: Canine ``` 这里,`dog` 就是一个由 `Animal` 创建出来的具体对象。 #### 继承的概念 继承是指一种机制,其中新的可以从现有的派生出来。新会自动拥有旧的所有属性方法,并且还可以添加额外的功能或者修改已有的功能。这有助于减少重复代码并提高代码的灵活性[^3]。 假设有一个更具体的动物别叫做 Dog,它可以这样被定义: ```python class Dog(Animal): def make_sound(self): return 'Woof!' rex = Dog("Rex", "Golden Retriever") print(rex.make_sound()) # 输出: Woof! ``` 在这里,`Dog` 是从 `Animal` 继承而来的,因此它不仅拥有了父所有的特性还具备了自己的独特之处。 #### 多态性方法覆盖 多态意味着同的不同事物可以根据上下文表现出不同的形式。在 OOP 的语境下通常指的是同一个接口能够适用于多种型的数据的能力。比如上面提到的 `make_sound` 函数就是一个很好的例子;尽管两个不同种的动物都有此方法,但是它们各自的表现却完全不同[^1]。 #### 使用内置函数检测关系 为了验证某个特定的是否为另一别的子集或者是某物的具体实例,我们可以利用 Python 提供的一些工具如 `issubclass()` `isinstance()` 来完成这项工作[^4]: ```python print(issubclass(Dog, Animal)) # True print(isinstance(rex, Dog)) # True print(isinstance(rex, Animal)) # True ``` 以上展示了如何检查 `Dog` 是否为 `Animal` 的子,以及确认 `rex` 实例属于哪个--- #### 总结 Python 的面向对象编程提供了一种强大的方式去构建复杂的应用程序结构。通过合理运用对象及其相关概念(像继承、封装、多态),可以让我们的软件开发过程变得更加高效有序。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值