#类的定义
class 类名():
成员1
成员2
成员3
....
#例子
class Person():
num = 0 #成员1
def Sayhello(self): #成员2
print("hello!!!!")
注意事项:
1.定义的时候类名开头一般要大写(后面杂说会有讲解)
2.注意缩进符
3.注意在定义的时候
成员分为俩大类:属性和方法
相关python语言的描述:
class Person(): #定义了Person这个类
num = 0 #num就是类的属性
def Sayhello(self): #sayhello就是类的方法
print("你好!!")
def learn(self): #learn(类的方法)表明人这个类会学习
print("我会学习")
注意事项和补充说明:
在定义类的方法的时候注意必须含有一个参数self 类与成员(属性和方法)的关系好比是:1.说明:
引用分为属性引用和成员引用 并且和成员的引用紧密结合的是成员的实例化((这里仍然借用上面人的例子)实例化就相当于是把这个人这一大类具体化到一个真真实实的人身上,比如:把人具体实例化到小明这个真真实实人身上)2.相关python语言的描述:
#类的定义
class Person():
num = 0 #定义了一个类属性
def sayhello(self):#定义了方法
print("你好!!")
def learn(self,name):
self.name = name
print("I am learning")
print("my name is %s"%(self.name))
#类的实例化
xiaoming = Person() #实例化到了xiaoming身上相当于是xiaoming具有了Person这个类的所有的属性和方法
xiaoming.sayhello() #引用方法(这里的方法是实例方法)
xiaoming.learn("xiaoming") #引用方法(这里的方法是实例方法)
print(Person.num) #引用类属性(注意是类属性不是实例属性)
print(xiaoming.name) #引用实例属性
执行结果:
注意事项:
由于是类是一个面向对象的概念,所以当你在调用类属性和方法的时候根本不需要知道这些内部的细节是什么,只需要知道这些属性和方法是用来实现什么就可以了(就好比一个电视机你根本无需知道电视机的内部是什么,你只需要要知道如何看如何用就ok了)
2)类的继承性: 继承性从字面意思理解就是从一个人那继承所有的东西包括他的功能和一些特征(好比继承财产),但是继承的时候私有的是不能继承的(好比你可以从一个人那里继承财产但是你不可能继承他的身体) 类的继承:有同样的道理;子类继承父类,子类具有了父类的所以的属性和方法(一定一定要注意:这里属性和方法都是共有的不是私有的) 成员重载(成员重写):就是父类的成员无法满足子类的成员的时候就得成员重载(成员重写) 继承还具有多样性(子类不仅仅从一个父类那里继承) 相关python语言的描述:#定义父类
class Person(object): #如果不写object则在子类中无法使用super函数
#析构函数(作用是初始化如果自行不定义,那么系统会自动调用内部的析构函数)
def __init__(self,name,age,sex):
self.serName(name)
self.setAge(age)
self.setSex(sex)
def sayhello(self):
print("你好!!!")
def setName(self,name):
if type(name) != str:
print("姓名输入错误,必须是字符串")
return print("姓名是:%S"%(name))
def setAge(self,age): #此处的age是形参
if type(age) != int:
print("年龄输入错误,必须是整数")
return print("年龄:%d"%(age))
def setSex(self,sex):
if sex != '男' and sex != '女':
print("性别输入错误")
return print("性别:%s"%(sex))
#实例化并且用父类
print("这是为父类这个数据类型的结果")
xiaoming = Person("小明",18,'男')
print("\n")
#定义子类
class Students(Person):
def __init__(self,name,age,sex,schoolyear):
super(Students,self).__init__(name,age,sex)#super(Students.self)相当于是自动绑定了实例,这是子类调用父类中的方法第一种(注意是子类中调用父类不是实例化调用)
#当然也可以用父类这中方法调用父类的方法Person.__init__(self,name,age,sex,schoolyear)这种方法self不会自动绑定,这是子类调用父类中的方法第二种
def schoolyear(self,schoolyear):
#此处的schoolyear是形参
if type(schoolyear) == int:
return print("学生的入学年份为:",schoolyear)
print("这是子类这个数据类型的结果:")
xiaohong = Students("小红",18,"女",2020)
注意事项:
1)init函数是系统内部函数可以进行自我定义但需注意是第一个参数必须是self(实例)
其功能是初始化
同时这个函数是隐式调用,不是显示调用
参考资料:http://c.biancheng.net/view/4533.html
2)super函数:
其该函数就是为了在派生类(子类)中调用基类(父类)中的方法。
其格式为:super(子类类名,self).父类方法名
3)继承的三大特性: