python语法入门五

  • 类和对象

类和对象

基础

'继承'
class MyList(list):
    pass

list1 = MyList()
list1.append(3)
list1.append(2)
list1.append(1)
print(list1)
# [3, 2, 1]
list1.sort()
print(list1)
# [1, 2, 3]

'创建类'
class Ball:
    def setName(self, name):
        self.name = name
    def kick(self):
        print('我是%s' % self.name)

a = Ball()
a.setName('A')
a.kick()
# 我是A

'初始化方法'
class Ball:
    def __init__(self, name):
        self.name = name
    def kick(self):
        print('我是%s' % self.name)

a = Ball('AA')
a.kick()
# 我是AA

'私有属性'
class Person:
    __name = '我是私有属性'
    def getName(self):
        return self.__name

p = Person()
print(p.getName())
# 我是私有属性
print(p._Person__name)
# 我是私有属性

继承:python为多继承

class Parent:
    def hello(self):
        print('父类方法')

class Child(Parent):
    def hello(self):
        print('子类方法')

p = Parent()
p.hello()
# 父类方法
c = Child()
c.hello()
# 子类方法

'覆盖父类方法'
class Fish:
    def __init__(self):
        self.x = 0
        self.y = 0
        print('位置:', self.x, self.y)

class Shark(Fish):
    def __init__(self):
        Fish.__init__(self) # 调用未绑定的父类方法
        self.other = 'none'

shark = Shark()
# 位置: 0 0

class Shark(Fish):
    def __init__(self):
        super().__init__() # 调用super方法
        self.other = 'none'

shark = Shark()
# 位置: 0 0

类、类对象和实例对象

'类、类对象和实例对象的关系'
class Num:
    cnt = 0

a = Num()
b = Num()
c = Num()
print(a.cnt)
# 0
print(b.cnt)
# 0
print(c.cnt)
# 0

c.cnt += 10
print(a.cnt)
# 0
print(b.cnt)
# 0
print(c.cnt)
# 10

'类对象值发生改变,由于实例对象c之前已经覆盖了类对象的cnt,'
'因此不发生改变'
Num.cnt += 100
print(a.cnt)
# 100
print(b.cnt)
# 100
print(c.cnt)
# 10
class A:
    def x(self):
        print('输出x')

a = A()
a.x()
# 输出x
a.x = 1
print(a.x)
# 1
a.x()
# (抛出异常,此时方法将不可用,不建议创建此属性)

当实例对象声明后,再删除类对象,那么该实例对象仍然可以使用类对象已有的方法等,因为实例对象一般是在程序运行结束后才被回收的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值