美文网首页
python语法入门五

python语法入门五

作者: 是我真的是我 | 来源:发表于2019-10-14 00:01 被阅读0次
  • 类和对象

类和对象

基础

'继承'
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()
# (抛出异常,此时方法将不可用,不建议创建此属性)

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

相关文章

网友评论

      本文标题:python语法入门五

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