大数据分析---重学Python之查漏补缺

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小半、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值