python学习总结之类对象

本文介绍了Python中面向对象的基本概念,包括self参数、初始化方法、对象计数等,并通过具体示例展示了如何实现类的继承。

面向对象(OO)是一种编程的思想而不是一种语言,python是用C语言来现实的面向对象的语言,面向对象的目的就是代码的重用,减少重复性的开发,面向对象的代码重用机制包括封装、继承、多态。面向对象的核心则是抽象、分离接口和实现。

这里让我们来一起探讨一下python的面向对象的具体格式和方法:

首先是self参数变量,它是区别方法和一般函数的一个标识,类方法必须含有这个self的变量:

#修改了sayhi()方法,将self去掉后:就会出现错误,说是没有参数。
        def sayHi():
                print 'hello,how are you?', self.name
[root@fsailing1 class]# py method.py
Traceback (most recent call last):
  File "method.py", line 9, in ?
    p.sayHi()
TypeError: sayHi() takes no arguments (1 given)
init和del方法,这两个方法是在类对象被实例化话的时候就已经被初始化了,或者类对象被回收之后自动出发del方法

类的参数变量和对象的参数变量:

class Person:
        population=0
        def __init__(self,name):
                self.name=name
                Person.population+=1
                print '(Initializing %s)' %self.name
        def __def__(self):
                print '%s says bye.' %self.name
                Person.population-=1
                if Person.population==0:
                        print 'I am the last one.'
                else:
                        print 'there are still %d people left' %Person.population
        def sayhi(self):
                print 'hi,my name is %s' %self.name
        def howMany(self):
                if Person.population==1:
                        print 'I am the only person here.'
                else:
                        print 'We have %d persons here.' %Person.population
继承,注意书写的格式,这里的的子类覆盖了父类的init方法和tell方法
class SchoolMember:
        '''Represents any school member.'''
        def __init__(self,name,age):
                self.name=name
                self.age=age
                print '(Initialized schoolMember: %s)' %self.name
        def tell(self):
                '''Tell my details.'''
                print 'Name:"%s"  Age:"%s"' %(self.name,self.age)
class Teacher(SchoolMember):
        '''Represents a teacher.'''
        def __init__(self,name,age,salary):
                SchoolMember.__init__(self,name,age)
                self.salary=salary
                print '(Initialized Teacher: %s)' %self.name
        def tell(self):
                SchoolMember.tell(self)
                print 'Salary: "%d"' %self.salary
class Student(SchoolMember):
        '''Represents a student.'''
        def __init__(self,name,age,marks):
                SchoolMember.__init__(self,name,age)
                self.marks=marks
                print '(Initialized Student :%s)' %self.name
        def tell(self):
                SchoolMember.tell(self)
                print 'Marks is :"%d"' %self.marks







### 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、付费专栏及课程。

余额充值