类和对象

2018-03-19  本文已影响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()
上一篇下一篇

猜你喜欢

热点阅读