类是对象的抽象,对象是类的具体实现
1、定义类
类里面可以封装属性,方法
# 构造方法,在构造方法定义属性,定义即赋值 # 类中的所有方法第一个参数都是self,调用时自动传入 # self就相当于对象本身(this)
#定义一个Person类
class Person(): # ()里面是父类,用于继承的,没有不填
# 构造方法,在构造方法定义属性,定义即赋值
# 类中的所有方法第一个参数都是self,调用时自动传入
# self就相当于对象本身(this)
def __init__(self, id, name, age, gender):
self.id = id
self.name = name
self.age = age
self.gender = gender
self.commer = "都是人"
# 定义方法
def run(self):
print("%s run run run" % (self.name))
# 定义str方法,相当于Java中toString方法
def __str__(self):
return "clazz Person(%s,%s,%d,%s)" %(self.id,self.name,self.age,self.gender)
#实例化,调用
person = Person(1001,"dyy",18,'女')
print(person)
print(person.id)
print(person.name)
person.run()
2、继承
class Teacher(Person): #在()中填入父类
def __init__(self, id, name, age, gender, subject):
super(Teacher, self).__init__(id, name, age, gender)
self.subject = subject
def teach(self):
print("%s 会上 %s课" % (self.name, self.subject))
def __str__(self):
return "clazz Teacher(%s,%s,%d,%s,%s)" %(self.id,self.name,self.age,self.gender,self.subject)
3、多态
#def Runpower(c:Person):
def Runpower(c):
c.run()
c.run()
Runpower(teacher)
4、封装
类里面方法属性的封装
—安全性的封装,在python中没有绝对的封装
def __init__(self, id, name, age, gender):
#加2个__
self.__sert = "这是一个安全性的封装" #方法也一样
#调用,使用对象._类名+属性名取数据,否则取不到数据
print(person._Person__sert)