class 类名:

​ 特征

​ 技能

定义类名的规范:驼峰命名法

#定义老男孩学生类
class OldboyStudent: #类名指向的是类的内存地址
    #学生相同的特征,也称为属性
    school = 'oldboy'
    
    #学生相同的技能
    #注意:在类内部定义函数,会默认有一个参数self
    def learn(self): #self此时当作一个形参
        print('learning...')
        
print(OldboyStudent)  ## <class '__main__.OldboyStudent'>
#查看类的名称空间
print(OldboyStudent.__dict__)
print(OldboyStudent.__dict__['school'])
print(OldboyStudent.__dict__['learn'])
OldboyStudent.__dict__['learn'](123)
#类提供一种获取名字的特殊方式“类名.名字”
#查
print(OldboyStudent.school) #--->oldboy
OldboyStudent.learn('形参') #--->learning...
#改
OldStudent.school = 'oldgirl'
print(OldStudent.shool) #--->oldgirl
#删
del OldStudent.school
#增
OldStudent.old_student = 'lzn'
print(OldboyStudent.old_student) #--->lzn

关于名称空间:

​ 函数的名称空间:在函数调用时产生,函数调用结束后销毁

​ 类的名称空间:在定义阶段时产生,会将类中所有名字都扔进类的名称空间中

对象

对象的产生:

​ -调用类产生对象

​ 类名+()调用类产生对象

​ 类的名称空间在定义时产生,对象的名称空间在调用类时产生

​ 调用类产生对象的过程称之为类的实例化,对象称之为类的一个实例

由对象来调用类内部的函数,称之为对象的绑定方法

​ 特殊之处在于:会将对象当作第一个参数传入***,若对象的绑定方法中还有其他参数,会一并传入。

class Student:
    #学校
    school = 'oldboy'
    
    def __init__(self,name,sex,age):
        print(self.__dict__)#查看当前对象的名称空间
        #给对象添加新的属性
        self.name = name
        self.sex = sex
        self.age = age
        
	def learn(self):
        print(self)
        print('learning...')
        
#*****想要在调用类时,为对象传入对象独有的特征
#*****__init__(self,name,sex,age)
#调用类时会将对象当做第一个参数,与括号内所有的参数一并传给__init__()
stu1 = Student('lzn','male','18')
print(stu1.name,stu1.age,stu1.sex)
#>>>lzn 18 male

#注意:凡是在类内部定义的.__开头或者__结尾的方法都有特殊意义。