类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。类=属性+方法
通俗的讲:类 : 动物,在你脑子里有个模型,一想到动物就会知道比如有毛啊,四条腿之类的。就是所有动物共有的特征。
对象:具体的一只猫。或具体的一只狗,这就是对象。 对象是建立字类的基础上的。有了一个类的模版,我们才能确定某一个具体的对象。
基本语法:
class ClassName: #注意 第一个字母需要大写
<statement-1>
.
.
<statement-N>
类的隐藏变量
class Yao:
__name = "yaopengfei" #定义一个隐藏属性
def getName(self):
return self.__name
y = Yao() #引用的时候一定后面要跟() ps我TMD忘记查了半天
y.getName()
#结果
#yaopengfei
示例:
包含隐藏变量的设定,类的继承。
#定义一个类
class people:
name = "" #变量赋值就是类的属性
age = 0
__weight = 0 #这部分定义一个私有属性,外部不能访问,且不能输出。格式为两个下划线
#定义构造方法
def __init__(self,n,a,w): #使用def定义一个方法,但是与函数定义不同,必须包含self参数,并且作
#为一个参数,self代表的类的实例。
self.name = n
self.age = a
self._weight = w
def speak(self): #定义一个使用方法
print('%s 说:%d 岁。' %(self.name,self.age))
# 实例化类
p = people('runoob',10,30)
p.speak()
#定义一个子类
class student(people):
grade = ''
def __init__(self,n,a,w,g): #重新定义父类的构造
people.__init__(self,n,a,w) #调用父类的
self.grade = g
def speak(self): #重新定义父类的方法
print(111)
print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
s = student('ken',10,89,3)
s.speak()
类 ,类对象和类实例区分
class X: #表示定义一个类
count = 0 #类对象的属性
a = X() #赋值
b = X()
c = X()
a.count #成为实例对象
0
b.count
0
c.count
0
c.count += 10 # 实例属性赋值后,会将类的属性覆盖掉
c.count
10
a.count
0
b.count
0
X.count += 100 #使用类属性赋值后,其他未被定义过的实例属性保持与类属性一致。
a.count
100
b.count
100
c.count # 赋值的c.count 还会保持原来赋值后的属性。
10
如果赋值的变量名和类的名称一致。将无法调用类的属性。
所有不要试图在一个类定义所有的能想到属性和方法,可以继承和组合的机制扩展,类的方法尽量用动词,类的属性用名词。