
Python笔记四
Python中的类和对象:
class Man:
def setname(self, name):
self.name = name#self相当于this指针
def saysomething:
print('%d说:啊啊啊啊!' % self.name)
a = Man()
b = Man()
a.setname('kishere')
b.setname('god')
a.saysomething()#输出kishere说:啊啊啊啊!
b.saysometing()#输出god说:啊啊啊啊!
#__init__方法:
class Ball:
def __init__(self, name):#类似于构造函数
self.name = name
#私有成员的定义:
class Person:
__name = "kishere"#用双下划线开头的变量就会被定义为私有成员
print(p._Person__name)#实际上可以用这种方法访问到私有成员, python并没有访问权限机制
继承:
class Parent:
def hello(self):
print("hello from father!")
class Child(Parent):#Child类继承了Parent类
super().__init__()#调用父类的__init__()方法
pass#啥都不做占位符
class Turtle:
def __init__(self, x):
self.num = x
class Fish:
def __init__(self, x):
self.num = x
class Pool:
def __inint__(self, x, y):#把类的实例化放到一个新的类里就叫做组合
self.turtle = Turtle(x)
self.fish = Fish(y)
def print_num(self):
print('水池中共有乌龟%d只, 鱼%d条' % (self.turtle, self.fish))
类, 类对象, 实例对象:
#类在被定义以后也会成为一个对象
class C:
def x(self):
print('kishere')
c = C()
c.x = 1
c.x()#这里会报错, 因为新定义的c.x会覆盖c.x()
#在类中的方法必须定义self参数, 否则就无法调用在实例对象中调用了, 只能在类对象中调用, 相当于static方法
构造和析构:
#python的__init__()是初始化方法
#__new__()才是构造函数
class Capstr(str):
def __new__(cls, string):
string = string.upper()
return str.__new__(cls, string)
a = Capstr('kishere is god')
#析构函数
def __del__(self):
print('Capstr析构!')
#发生del操作时不一定会执行, 如果多个标签应用一个实例对象, 当引用计数为0时才会执行

