一分钟学Python| 面向对象(中)

简介: 一分钟学Python| 面向对象(中)

类方法

在类的内部,使用 def 关键字来定义一个方法,与一般函数定义有几点不同

  1. 类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。
  2. 方法的调用需要实例化类,并以"实例名.方法名(参数列表)"的形式进行调用
  3. 必须整体进行一个单位的缩进
    以下为代码实例


#类定义
class people:
    #定义基本属性
    name = ''
    age = 0
    #定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0
    #定义构造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 说: 我 %d 岁。" %(self.name,self.age))
# 实例化类
p = people('ming',10,30)
p.speak()
执行以上程序输出结果为:
ming 说: 我 10 岁。


继承

Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。派生类的定义如下所示:


class DerivedClassName(BaseClassName1):
    <statement-1>
    .
    .
    .
    <statement-N>


BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:


class DerivedClassName(modname.BaseClassName):
#类定义
class people:
    #定义基本属性
    name = ''
    age = 0
    #定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0
    #定义构造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 说: 我 %d 岁。" %(self.name,self.age))
#单继承示例
class student(people):
    grade = ''
    def __init__(self,n,a,w,g):
        #调用父类的构函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆写父类的方法
    def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
s = student('ken',10,60,3)
s.speak()


执行以上程序输出结果为:


ken 说: 我 10 岁了,我在读 3 年级


多继承

Python同样有限的支持多继承形式。多继承的类定义形如下例:


class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    .
    <statement-N>


需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。


#类定义
class people:
    #定义基本属性
    name = ''
    age = 0
    #定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0
    #定义构造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 说: 我 %d 岁。" %(self.name,self.age))
#单继承示例
class student(people):
    grade = ''
    def __init__(self,n,a,w,g):
        #调用父类的构函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆写父类的方法
    def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
#另一个类,多重继承之前的准备
class speaker():
    topic = ''
    name = ''
    def __init__(self,n,t):
        self.name = n
        self.topic = t
    def speak(self):
        print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))
#多重继承
class sample(speaker,student):
    a =''
    def __init__(self,n,a,w,g,t):
        student.__init__(self,n,a,w,g)
        speaker.__init__(self,n,t)
test = sample("Tim",25,80,4,"Python")
test.speak()   #方法名同,默认调用的是在括号中排前地父类的方法


执行以上程序输出结果为:


我叫 Tim,我是一个演说家,我演讲的主题是 Python


相关文章
|
2月前
|
Python
python-面向对象
python-面向对象
15 2
|
4天前
|
算法 Python
Python面向对象oop编程(二)
Python面向对象oop编程(二)
|
17天前
|
Java 程序员 Python
python学习13-面向对象的三大特征、特殊方法和特殊属性、类的浅拷贝和深拷贝
python学习13-面向对象的三大特征、特殊方法和特殊属性、类的浅拷贝和深拷贝
|
2月前
|
Java 程序员 数据安全/隐私保护
Python教程第6章 | Python面向对象
Python面向对象概念、类的定义和调用、类方法、修改和增加类属性、类和对象、初始化函数、类的继承、类的多态、类的访问控制
44 0
|
2月前
|
Python
|
3月前
|
机器学习/深度学习 人工智能 IDE
Python是一种高级、解释型、交互式和面向对象的脚本语言
Python是一种高级、解释型、交互式和面向对象的脚本语言
25 2
|
4月前
|
Python
【Python30天速成计划】6. 面向对象的继承和多态
【Python30天速成计划】6. 面向对象的继承和多态
|
4月前
|
Python
python 面向对象之继承
python 面向对象之继承
|
4月前
|
Python
Python基础学习 -- 面向对象
Python基础学习 -- 面向对象
19 0
|
4月前
python-pathlib模块使用 --- 面向对象的文件系统路径
python-pathlib模块使用 --- 面向对象的文件系统路径
20 0