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
#注意:凡是在类内部定义的.__开头或者__结尾的方法都有特殊意义。