python相关

7. Python的面向对象

2018-03-27  本文已影响0人  edwin1993
简介

根据操作数据的函数或语句块来设计程序,被称为面向过程的编程。
把数据和功能结合起来,用称为对象的东西包裹起来组织程序的方法称为面向对象的编程。
类和对象是面向对象编程的两个主要方面。类创建一个新类型,而对象是这个类的实例 。
属于一个对象或类的变量被称为域。对象也可以使用属于类的函数来具有功能。这样的函数被称为类的方法。域和方法可以合称为类的属性。

类使用class关键字创建。类的域和方法被列在一个缩进块中。

self

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候Python会提供这个值。这个特别的变量指对象本身,名称是self。

class Person:
    def __init__(self,name):
        self.name = name
        print('my name is ', 'self.name')
    def saySth(self):
        print('hello')
            
p = Person('edwin')
p.saySth()

# 结果
my name is  edwin
hello

saySth方法没有任何参数,但仍然在函数定义时有self。

__init__方法

在Python的类中有很多方法的名字有特殊的重要意义。__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化。注意,这个名称的开始和结尾都是双下划线。
上例中,我们没有调用init方法,但其输出中仍有 'name name is'。

区分类与对象的变量

类的变量和对象的变量只在这些类与对象的前提下有效。

class haveNum:
    num = 0
    def __init__(self,num):
        self.num = num
    
num1 = haveNum(1)
num2 = haveNum(2)

# 结果
num1.num
Out: 1

num2.num
Out: 2

haveNum.num
Out: 0
继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制,通过继承形成父类子类关系。

class Person:
    """Represents any school member"""
    def __init__(self,name,age):
        self.name = name
        self.age = age
        print(name,age)
    
    def saySth(self):
        print('person')
    
class Teacher(Person):
    def __init__(self,name,age,salary):
        Person.__init__(self,name,age)
        self.salary = salary
        print(name,age,salary)
        
class Student(Person):
    def __init__(self,name,age,score):
        Person.__init__(self,name,age)
        self.score = score
        print(name,age,score)
        
teacher = Teacher('MR',40,20000)
student = Student('edwin',20,90)

teacher.saySth()
student.saySth()

# 结果
MR 40
MR 40 20000
edwin 20
edwin 20 90
person
person

Python不会自动调用基本类的constructor,你得亲自专门调用它。

上一篇 下一篇

猜你喜欢

热点阅读