面向对象【二】类与对象的属性

python之类与对象的属性

 

类相关的知识

在python2中的区分:html

经典类:python

1
2
class  School:
     pass

新式类:函数

1
2
class  School( object ):
     pass

 在python3中以上两种均为新式类post

属性:ui

  • 数据属性:就是变量
  • 函数属性:就是函数,在面向对象里一般称为方法

注:类和对象均用点来访问本身的属性url

类的属性

数据属性即变量,类的定义与函数又及其类似,其实能够用函数的做用域来理解类的属性调用spa

类的数据属性:code

1
2
3
class  School:
     Teacher  =  "老王"
print (School.Teacher)

类的函数属性(通常称为方法):htm

1
2
3
4
5
class  School:
     Teacher  =  "老王"
     def  Examination( self ):
         print ( "%s的班级正在考试" % self )
School.Examination( "alex" )

查看类属性:对象

查看类属性的两种方式:

  1. dir(类名) 查出的是一个名字列表
  2. 类名.__dict__ 查出的是一个字典,key是属性名,value是属性值

#注意:类名加点调用本身的属性实际上就是到属性字典里去找东西

复制代码
class School:
    Teacher = "老王"
    def Examination(self):
        print("%s的班级正在考试"%self)
print(dir(School)) #查看类的属性
print(School.__dict__) #查看类的属性字典
print(School.Teacher)#同print(School.__dict__["Teacher"])  调用数据属性
School.Examination("alex")#同School.__dict__["Examination"]("alex") 调用函数属性
复制代码

 特殊的类属性:

复制代码
class School:
    """
    文档
    """
    Teacher = "老王"
    def Examination(self):
        print("%s的班级正在考试"%self)
print(School.__name__) #查看类名
print(School.__doc__) #查看文档
print(School.__base__) #查看类的第一个父类
print(School.__bases__) #查看类全部父类构成的元组
print(School.__dict__) #查看类的属性
print(School.__module__) #查看类所在哪一个模块
print(School.__class__) #实例School对应的类(仅新式类中)
复制代码

对象相关知识

对象是由类实例化而来,实例化结果成为一个实例或者称做一个对象

实例化:

复制代码
class School:
    """
    文档
    """
    Teacher = "老王"
    def Examination(self):
        print("%s的班级正在考试"%self)
School()

#类名加上括号就是实例化(能够理解函数运行的返回值就是一个实例)
复制代码

实例属性:

复制代码
class School:
    """
    这是一个学校类
    """
    dang = "dang"
    #实例化,init函数不能够有返回值,返回值为空
    def __init__(self,name,addr,type):
        self.mingzi = name #p1.mingzi = name
        self.dizhi = addr  #p1.dizhi = addr
        self.leixing = type#p1.leixing = type
    #考试
    def Examination(self):
        print("%s正在考试"%self.mingzi)
    #招生
    def Recruit_students(self):
        print("%s正在招生"%self.mingzi)
person = School("oldboy","沙河","私立")
person.Examination()
"""
一、实例化的过程本质上就是调用__init__的运行
二、self就是实例自己=person
三、class会自动帮__init__返回值
四、实例只有数据属性,print(person.__dict__) 
五、实例调用函数属性,实际上调用的是类的函数属性,person.Examination()  
六、print(person.dang)跟函数做用域同样,在本身的做用域找不到会去上一层找
七、类有数据属性和函数属性,实例只有数据属性
八、实例调用函数属性.class会帮你把实例自己传给函数
"""
复制代码
相关文章
相关标签/搜索