zoukankan      html  css  js  c++  java
  • python 面向对象的编程

    类和对象是面向对象编程的两个主要方面,所以就简单学习一下类以及对象的使用:

    1. self

    涉及到函数类的区别了:

    类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你为这个参数赋值,

    Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。亦可理解为js,java中的this。

    self的原理: Python自动转为MyClass.method(MyObject, arg1, arg2)。所以,这个你不用self不需要赋值。

    2. 对象属性使用

    #!/usr/bin/python
    # Filename: method.py
    
    class Person:
        name ="Jams" 
        def sayHi(self):
            print 'Hello, how are you?',self.name
    
    p = Person()
    print p.name
    p.sayHi()

    3. 初始方法(构造函数)

    #!/usr/bin/python
    # Filename: class_init.py
    
    class Person:
        def __init__(self, name):
            self.name = name
        def sayHi(self):
            print 'Hello, my name is', self.name
    
    p = Person('Swaroop')
    p.sayHi()

    __init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。其实就是构造函数。你懂的。

    4. 私有方法

    如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。

    5. 继承

    python简明教程的一句话:面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过 继承 机制。继承完全可以理解成类之间的 类型和子类型 关系。其实也是oo的多态的一种实现方式。

    我发现python继承实际使用的是对象欺骗的方式,在子类中调用基类的某个方法,不过,_int_方法还需要手动调用一下:

    #!/usr/bin/python
    # Filename: inherit.py
    
    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: "%d"' % self.marks
    
    t = Teacher('Mrs. Shrividya', 40, 30000)
    s = Student('Swaroop', 22, 75)
    
    print # prints a blank line
    
    members = [t, s]
    for member in members:
        member.tell() # works for both Teachers and Students

    这个是python简明教程的源码,已经很直观了。

    下课了。。。

    资料来源:python简明教程

  • 相关阅读:
    postgresql数据迁移
    编译安装或者mysql启动时遇到的错误小记
    安装数据库时提示重启删除 以下注册信息则不用重启
    ​sql2008安装提示报错,.必须使用"角色管理工具"安装或配置Microsoft.net.framework 3.5 sp1
    windows10 安装jdk13.0.1 与 apache-jmeter-5.1.1
    Axure RP 9 获取验证码发送倒计时
    PHP 重定向跳转页面使用post传参
    用 PHPExcel 导入excel表格并展示到前台
    当失去焦点时 验证时分秒 并提示
    iptables 防止syn ddos ping攻击
  • 原文地址:https://www.cnblogs.com/nishilunhui/p/2879208.html
Copyright © 2011-2022 走看看