• python 中面向对象编程简单总结1


    1.类的定义方式

    class ClassName(object): #object 表示继承的类,默认为object
        pass

       类的使用类似函数的调用,也可以认为是调用了一次模板来创建一个实例。

    2.创建对象的属性和方法

      不同于java等语言的定义,python是动态语言,因此可以给同一个类的不同实例动态地增加不同的属性。

    xiaoming = Person()
    xiaoming.name = "xiaoming" #赋值的时候创建一个实例的属性
    xiaoming.gender = "male"
    xiaohong = Person()
    xiaohong.school = "sichuan university" #和xiaoming的属性可以不同
    xiaohong.sex = "female"

      在Python的中方法也可以动态地增加到实例对象中,需要用到  types.MethodType() ,这种情况在通常情况下不多见!一般还是定义在类中。

    import types
    def fn_get_grade(self):
        if(self.score >= 80):
            return 'A'
        elif(self.score >= 60):
            return 'B'
        else:
            return 'C'
    class Person(object):
        def __init__(self,name,score):
            self.name = name
            self.score = score
    p1 = Person('Bob',90)
    #动态为p1绑定方法
    p1.get_grade = types.MethodType(fn_get_grade,p1,Person)
    print p1.get_grade()   #会输出A,方法动态绑定到p1对象上了
    p2 = Person('Alice',65)
    print p2.get_grade() #Error,p2没有这个方法

    3.初始化实例属性

    def __init__(self,attr1,attr2): #在创建实例是被自动调用
        self.attr1_name = attr1
        self.attr2_name = attr2

    4.访问限制

       以双下划线开头,且不以双下划线结尾的属性名,无法被外界访问

    5.创建类属性和方法

      为类所有,没有用self.attr 的方式来绑定到对象的属性,它在类的方法中要通过 类名.类属性名 如: Person.cout 来访问。千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。

    class Person(object):
        count = 0  #定义类属性
        @classmethod  #标记类方法
        def how_many(cls): #cls表示类本身,作用相当于self
            return cls.count
        def __init__(self,name):
            self.name = name
            Person.count = Person.count + 1 #没有cls,需要用类名来访问类属性
    print Person.how_many()
    p1 = Person('Bob')
    print Person.how_many()
  • 相关阅读:
    Python成长之路第一篇(4)_if,for,while条件语句
    Python成长之路第一篇(2)__初识列表和元组
    Python练习_更改配置文件(3)
    python练习_购物车(2)
    vue element ui 在父组件中控制子组件表单验证
    mysql find_in_set
    webstorm vuecli4 支持别名
    axios 长数字精度丢失问题
    vue element使用注意
    vue cli 查看webpack的配置
  • 原文地址:https://www.cnblogs.com/roger9567/p/4596681.html
Copyright © 2020-2023  润新知