python中类的使用需要注意的事项?
相对于java而言,python真的简洁的让人有点无法习惯,如python的类变量声明的形式直接在等号后赋值即可,类变量将在这个类的所有实例之间共享。你可以在内部类或外部类使用 People.Count 访问。
python中初始化的构造方法:__init__(),其中self 为类的实例。
python中方法的创建及使用,self 在定义类的方法时是必须有的。
__xx__ | 定义特殊方法 |
__xx | 双下划线,声明该属性为私有 |
_xx | 单下划线,protected类型的变量 |
class People:
# 声明类变量
peopleCount = 0 #整形类变量
name = '' #字符型类变量
country = ''
#__init__()方法为构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
def __init__(self,name,country,age,sex):
self.name = name
self.country = country
self.age = age
self.sex = sex
People.peopleCount += 1
#定义一个方法
def displayPeople(self):
print("%s来自%s" %(People.name,People.country))
print "Name : ", self.name, ", Country: ", self.country
#创建实例对象
people1 = People('huizi','China',19,'woman')
name = input()
country = input()
p = People() # 用对象p对类People进行实例化
p.displayPeople(name,country) #方法的调用
类的继承:
class Parent: # 定义父类
parentAttr = 100
def __init__(self):
print "调用父类构造函数"
def parentMethod(self):
print '调用父类方法'
def setAttr(self, attr):
Parent.parentAttr = attr
def getAttr(self):
print "父类属性 :", Parent.parentAttr
class Child(Parent): # 定义子类
def __init__(self):
print "调用子类构造方法"
def childMethod(self):
print '调用子类方法'
c = Child() # 实例化子类
c.childMethod() # 调用子类的方法
c.parentMethod() # 调用父类方法
c.setAttr(200) # 再次调用父类的方法 - 设置属性值
c.getAttr() # 再次调用父类的方法 - 获取属性值
方法重写:
class Parent: # 定义父类
def myMethod(self):
print '调用父类方法'
class Child(Parent): # 定义子类
def myMethod(self):
print '调用子类方法'
c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
#输出 ‘调用子类方法’
析构函数----类的销毁 __del__ ,在对象销毁的时候被调用,当对象不再被使用时,__del__方法运行:
class Point:
def __init__( self, x=0, y=0):
self.x = x
self.y = y
def __del__(self):
class_name = self.__class__.__name__
print class_name, "销毁"
pt1 = Point()
pt2 = pt1
pt3 = pt1
print id(pt1), id(pt2), id(pt3) # 打印对象的id
del pt1
del pt2
del pt3
python中的三目运算符?
与c语言java不同,python中没有三目运算符 ? :
以gcd算法为例:根据欧几里得原理 利用辗转相除法求最大公约数
核心定理:gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0)
最小公倍数可利用最大公约数求:a * b / gcd(a, b)
int gcd(int a, int b)
{
int r;
while(b > 0)
{
r = a % b;
a = b;
b = r;
}
return a;
}
//递归法(最美的写法)
int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a % b);
}
python中的写法:
def gcd(a, b):
if a % b == 0:
return b
else:
return gcd(b, a % b)
//求最小公倍数
def lcm(a, b):
return a * b / gcd(a, b)