python面向对象,类
Posted 星空6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python面向对象,类相关的知识,希望对你有一定的参考价值。
类:抽象的概念;是属性和方法的集合。类中的函数叫方法。
对象instance、object
对象是类的具象,是一个实体。对象是数据和操作的封装。
面向对象3要素:
1.封装:
2.继承:
多复用,继承来的就不用自己写了
多继承少修改。
3.多态:
面向对象编程最灵活的地方,动态绑定。
类:
必须使用class关键字。
类名必须使用大驼峰命名。
类定义完成后,就产生了一个类对象,绑定到了ClassName上。
类对象:类的定义就会生成一个类对象。
类的属性:类定义中的变量和类中定义的方法都是类的属性。
类变量:x是类MyClass的变量。
class MyClass: """help myclass""" x=123 def foo(self): print(self.x) print(MyClass) print(MyClass.__name__) print(MyClass.x) print(MyClass.foo) print(MyClass.__doc__) print(type(MyClass))
foo是method方法对象,不是普通的函数对象function了(函数function不在类里面),它必须至少有一个参数,且第一个参数必须是self(self可以换名字),但这个参数位置就留给了self。 java是使用this.
self指代当前实例本身;
__init__方法
MyClass()实际上调用的是__init__(self)方法,可以不定义,如果没有定义会在实例后隐式调用。
作用:对实例进行初始化。
__init__()方法不能有返回值,也就是只能是None.
实例可以访问类属性,类不可以访问实例属性。方法中可以通过self.y等来定义实例属性。
初始化函数可以多参
实例对象instance
类实例化后一定会获得一个对象,就是实例对象。
__init__方法的第一个参数self就是指代某一个实例。
实例变量,类变量
实例变量是每一个实例自己的变量,是自己独有的;类变量是类的变量,是类的所有实例共享的属性和方法。
特殊属性:含义
__name__:对象名
__class__:对象的类型
__dict__:对象的属性的字典
__qualname__:类的限定名
总结
是类的,也是这个类所有实例的,其实例都可以访问到;是实例的,就是这个实例自己的,通过类访问不到。
类变量是属于类的变量,这个类的所有实例可以共享这个变量。
实例可以动态的给自己增加一个属性。实例.__dict__[变量名]和实例.变量名都可以访问到。
实例的同名变量会隐藏这类变量,或者说是覆盖了这个类变量。
实例属性的查找顺序
指的是实例使用.来访问属性,会先找自己的__dict__,如果没有,然后通过属性__class__找到自己的类,再去类的__dict__中找。
注意,如果实例使用__dict__[变量名]访问变量,将不会按照上面的查找顺序找变量了。
一般来说,类变量使用全大写来命名。
class Person: age=3 height=170 def __init__(self,name,age=18): self.name=name self.age=age hua=Person(\'hua\') Tony=Person("Tony",20) Person.age=30 print(Person.age,hua.age,Tony.age)#30,18,20 print(Person.__dict__,hua.__dict__,Tony.__dict__,sep="\\n") print(Person.height,hua.height,Tony.height)#170,170,170 Person.height+=20 print(Person.height,hua.height,Tony.height)#190,190,190 print(Person.__dict__,hua.__dict__,Tony.__dict__,sep="\\n") hua.height=20 print(Person.height,hua.height,Tony.height)#190,20,190 print(Person.__dict__,hua.__dict__,Tony.__dict__,sep="\\n") print(Person.__dict__["height"]) print(Tony.__dict__["height"])#报错keyerror #对象优先访问自己的属性/字典,自己没有,则访问类的属性/字典
以上是关于python面向对象,类的主要内容,如果未能解决你的问题,请参考以下文章