美文网首页
类和对象

类和对象

作者: 钟速 | 来源:发表于2018-03-19 06:48 被阅读0次

    对象=属性+方法

    class Turtle: # 类首字母大写
        color = 'green'
        weight = 10
        def climb(self):
            print('正在爬')
    
    self

    由同一个类可以生成无数对象,当一个对象的方法被调用是,对象会将自身的引用作为第一个参数传给该方法,Python就知道需要操作哪个对象的方法了。

    class Ball:
        def setName(self, name):
            self.name = name
        def showName(self):
            print('my name is' + self.name)
    
    a = Ball()
    a.setName('football')
    a.showName()
    
    构造方法__init__()

    只要实例化一个对象,__init__()方法就会在对象被创建时自动调用。

    class Ball:
        def __init__(self, name):
            self.name = name
        def showName(self):
            print('my name is' + self.name)
    
    a = Ball('football')
    a.showName()
    
    公有和私有
    class Person:
        name = 'Tom' # 定义公有变量
    
    p = Person()
    p.name
    
    class Person:
        __name = 'Tom' # 定义私有变量
    
    p = Person()
    p.__name # 报错,无法调用私有变量
    

    可以从内部调用:

    class Person:
        def __init__(self, name):
            self.__name = name
        def getName(self):
            return self.__name
    
    p = Person('Tom')
    p.getName()
    

    继承

    class 类名(被继承的类):
        ···
    
    class Parent:
        def hello(self):
            print('正在调用父类')
    
    class Child(Parent):
        pass
    

    如果子类中定义与父类同名的方法或属性,则会自动覆盖。

    class Child(Parent):
        def hello(self):
            print('正在调用子类')
    

    当重写子类__init__时,调用父类__init__的方法:

    1. 调用未绑定的父类方法
    class Shark(Fish):
        def __init__(self):
            Fish.__init__(self)
            self.hungry = True
    
    1. 使用super函数
    class Shark(Fish):
        def __init__(self):
            super.__init__(self)
            self.hungry = True
    

    组合

    class Turtle:
        def __init__(self, x):
            self.num = x
    
    class Fish:
        def __init__(self, x):
            self.num = x
    
    class Pool:
        def __init__(self, x, y):
            self.turtle = Turtle(x)
            self.fish = Fish(y)
        def print_num(self):
            print('水池里共有乌龟 %d 只, 鱼 %d 条!' % (self.turtle.num, self.fish.num))
    
    pool = Pool(1, 10)
    pool.print_num()
    

    相关文章

      网友评论

          本文标题:类和对象

          本文链接:https://www.haomeiwen.com/subject/nbieqftx.html