【python进阶】python中的类、继承、多态

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36372879/article/details/86495341

定义一个python类:

class Point:
    def __init__(self, x = 0, y = 0):
        self.x, self.y = x, y
p = Point(10, 10)
print(type(p))
print(p.x, p.y)
print(dir(Point))
print(help(Point))

输出:
在这里插入图片描述
dir可以打印这个类里面的所有方法。
help可以查看帮助信息


类的构造

Python 没有 public / protected / private这样的访问控制,如果你非要表示“私有”,习惯是加双下划线前缀。

class Point:
    def __init__(self, x=0, y=0):
        self.__x, self.__y = x, y

    def set(self, x, y):
        self.__x, self.__y = x, y

    def __f(self):
        pass
p = Point(10, 10)
print(p.__x)

在这里插入图片描述


类的继承

class Person(object):
    def __init__(self,name,sex):
        self.name = name
        self.sex = sex
        
    def print_title(self):
        if self.sex == "male":
            print("man")
        elif self.sex == "female":
            print("woman")

class Child(Person):                            # Child 继承 Person
    pass
            
May = Child("May","female")
Peter = Person("Peter","male")

print(May.name,May.sex,Peter.name,Peter.sex)    # 子类继承父类方法及属性
May.print_title()
Peter.print_title()

在这里插入图片描述
可以看到child是继承person的。
Python 有两个判断继承的函数:isinstance() 用于检查实例类型;issubclass() 用于检查类继承。参见下方示例:

class Person(object):
    pass

class Child(Person):                 # Child 继承 Person
    pass

May = Child()
Peter = Person()    

print(isinstance(May,Child))         # True
print(isinstance(May,Person))        # True
print(isinstance(Peter,Child))       # False
print(isinstance(Peter,Person))      # True
print(issubclass(Child,Person))      # True

python类的多态

这里重写了print_title函数

class Person(object):
    def __init__(self,name,sex):
        self.name = name
        self.sex = sex
        
    def print_title(self):
        if self.sex == "male":
            print("man")
        elif self.sex == "female":
            print("woman")

class Child(Person):                # Child 继承 Person
    def print_title(self):
        if self.sex == "male":
            print("boy")
        elif self.sex == "female":
            print("girl")
        
May = Child("May","female")
Peter = Person("Peter","male")

print(May.name,May.sex,Peter.name,Peter.sex)
May.print_title()
Peter.print_title()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_36372879/article/details/86495341
今日推荐