8.1.5、Python__面向对象,定义类,继承,多态,封装

类是对象的抽象,对象是类的具体实现

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)

猜你喜欢

转载自blog.csdn.net/nerer/article/details/121193086