对象是特征与技能的结合体,类是一系列对象相似的特征与技能的结合体。
在实现中:
一定是先有的一个个具体的对象,后总结出的类。如(人,人类)
在程序中:
一定是先定义类,后产生对象。
类的格式: class 类名:
类体内的代码在类的定义阶段就会立即执行,
如:
class sut:
sc='dagschool'
def learn(self):
print('is learing')
def __init__(self,name,sex,age): #__init__在调用类时会自动触发
self.Name=name
self.Sex=sex
self.Age=age
#self.Name='李'
#self.Sex='男'
#self.Age=18
def choose_cou(self):
print('choose')
#类的查看属性
print(sut.__dict__) #__dict__查看类的名称空间
print(sut.sc) #访问类的名称空间,"."访问前面名称空间的属性。
print(sut.learn) #learn类的函数属性
#类的增加属性
sut.counttry='china'
print(sut.counttry)
#类的修改属性
sut.sc='DAGSCHOOL'
print(sut.sc)
#类的删除属性
del sut.counttry
print(sut.counttry)
#类函数的调用,必须传参
sut.learn('ss')
#调用类的过程又称之为实例化
#1.得到的返回值,即是一个对象,该对象是一个空对象。
#2.把空对象,连同调用类时类括号参数,把它拼接成一堆参数,其中空对象本身要当成第一个参数,然后传给初始化的函数__init__。如:sut.__init__(sut1,'李','男',18)
sut1=sut('李','男',18) #sut1就是一个对象
print(sut1.__dict__)
print(sut1.Name,sut1.Sex,sut1.Age)
#类中定义的函数是绑定给对象使用的,不同的对象就是不同的绑定方法,绑定给谁,就应该由谁来调用。谁来调用,就会谁当做第一个参数传给对象的函数。
class sut:
sc='dagschool'
def learn(self,x,y):
print('%s is learing' %self.Name)
print(x,y)
def __init__(self, name, sex, age): # __init__在调用类时会自动触发
self.Name=name
self.Sex=sex
self.Age=age
sut1=sut('李','男',18) #sut1就是一个对象
print(sut1.__dict__)
print(sut1.Name,sut1.Sex,sut1.Age)
sut2=sut('罗','男',8)
sut3=sut('候','男',181)
print(sut.learn)
print(sut1.learn)
print(sut2.learn)
print(sut3.learn)
sut1.learn(1,2)
sut.learn(sut1,1,2) #结果相同
#在类内部定义的函数,都应该默认有一个参数。
class Teac:
schoo='oldboy'
count=0
def __init__(self,name,sex,age,level,salary):
self.name=name
self.sex=sex
self.age=age
self.level=level
self.salary=salary
Teacher.count+=1
def teach(self):
print('%s is tacahing' %self.name)
t1=Teac('ii','sdf',19,56,20)
t2=Teac('tr','tf',58,60,1000)
t3=Teac('hg','aop',68,40,100)
print(t1.count)
#类及类型
g=[1,2,3,4] #g=list([1,2,3,4])
g1=list([1,2,3,4])
g2=list([1,2,3,4])
g1.append(5)
#等于
list.append(g1,5) #g1相当于默认参数self
print(g1)
#绑定方法的理解
g1.append('a')
g2.append('b')
疏通一个概念:
装载一个类,会对该类进行初始化,而构造函数也是负责用来初始化的,之所以我们调用super访问父类的值,就是因为初始化了父类属
性,但绝没有生成父类对象。
须知调用构造函数初始化≠实例化一个对象,关于实例化对象一定是看new关键字的,这个我在通过接口抽象类“创建”对象也有讲解。
微信公众号“计算机基础学”关注我哟