-
import math
def is_int(x):
return math.sqrt(x)%1 == 0.0
L = range(1,101)
LL = []
b = filter(is_int,L)
for i in b:
LL.append(i)
print(LL)
查看全部 -
class Animals(object):
def __init__(self,name,age): #init前后下划线是两条
self.name=name
self.age=age
Dog = Animals('ddd',1)
Cat = Animals('ccc',6)
print(Dog.name,Dog.age)
print(Cat.name,Cat.age)查看全部 -
# Enter a code
class Person(object):
def __init__(self,name,gender):
self.name = name
self.gender = gender
class Student(Person):
def __init__(self,name,gender,score):
super(Student,self).__init__(name,gender)
self.score = score
def __str__(self):
return 'name:{},gender={}'.format(self.name,self.gender)
def __repr__(self):
return 'score={}'.format(self.score)
bob = Student('Bob', 'Male',80)
s = str(bob)
t = repr(bob)
print(s,t)
查看全部 -
class Animal(object):
def __init__(self.name.gender)
self.name=name
self.gendee=gender
count=count+1查看全部 -
# Enter a code
class Animal(object):
count = 0
def __init__(self,name,age):
self.name = name
self.age = age
Animal.count += 1
dog = Animal('wangwang',1)
print(Animal.count)
cat = Animal('mimi',3)
print(Animal.count)
查看全部 -
a=1 print(a)
查看全部 -
# 希望一次返回3个函数,分别计算1x1,2x2,3x3:
def count():
fs = []
for i in range(1, 4):
def f():
return i*i
fs.append(f())
return fs
f1, f2, f3 = count()查看全部 -
#当使用isinstance的时候,我以为任意两个都可以比较,
#实际上他的作用是把一个实例和一个类型相比较
#所以后面一个空应该是填类型而不是实例.
查看全部 -
#上一节,最后的那个练习,开始的时候有点纠结要不要在类里面定义
#在外面直接赋值,或者说指向一个实例值是否正确
#但实际上,那个是把一个值,和一个实例连在一起,只和那个实例相关
查看全部 -
class Cat:pass查看全部
-
#请实现前面介绍过的斐波那契数列类Fib,加入__call__方法,使得调用的方式如下简单。
# f = Fib() print f(10) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
# 自己的难点:f = Fib() 要想调用的时候不带参数,那其__init__里就不能有参数,要把num挪到其他的地方去
class Fib(object):
def __init__(self):
self.res=[] #为什么这么写
def __call__(self, num):
# self.res = []
# self.num = num #这句为什么不用写,是因为__call__里本来就不用写吗
a = 0
b = 1
for x in range(num):
self.res.append(a)
a, b = b, a + b
return self.res #这个语句
# def __str__(self):
# return str(self.res) #这里为什么不用写__str__这段代码呢?
f = Fib()
print(f(10)) #输出[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]查看全部 -
Python类的数学运算
__add__、__sub__、__mul__、__truediv__
def gcd(a,b):
if b==0:
return a
return gcd(b,a%b)
class Rational(object):
def __init__(self,p,q): #这里有两个参数
self.p = p
self.q = q
def __add__(self, r): #这里只有一个参数
return Rational(self.p*r.q+self.q*r.p,self.q*r.q) #返回的是一个Rational对象
def __sub__(self, r): #add函数实在创建Rational类之后的,所以在调用这个函数的时候Rational已经创建完了
return Rational(self.p * r.q-self.q * r.p, self.q * r.q)
def __mul__(self, r):
return Rational(self.p * r.p , self.q * r.q)
def __truediv__(self, r):
return Rational(self.p * r.q, self.q * r.p)
def __str__(self): #返回结果还要写一个__str__,如果我们的类也想把容易理解的字符串输出的话,那么我们也需要实现类的__str__()方法。
g=gcd(self.p,self.q) #这里的使用
return '{}/{}'.format(int(self.p/g),int(self.q/g)) #注意这里format里写的是什么,写的self.p、self.q
r1 = Rational(1, 2)
r2 = Rational(1, 5)
print(r1 + r2)
print(r1 - r2)
print(r1 * r2)
print(r1 / r2)查看全部 -
localtion就是属于Animal这个类的类属性,此后,通过Animal()实例化的所有对象,都可以访问到localtion,并且得到唯一的结果。
查看全部 -
不通过实例修改类属性
查看全部 -
类和实例对象是有区别的,类是抽象,是模板,而实例则是根据类创建的对象,比如类:动物,只是一个抽象,并没有动物的详细信息,而猫、狗等,则是具体的动物,是类的对象。
实例属性每个实例各自拥有,互相独立,而类属性有且只有一份
class Animal(object):
localtion = 'Asia' #类属性# 通过Animal()实例化的所有对象,都可以访问到localtion,并且得到唯一的结果
# 类属性,也可以通过类名直接访问
# 类属性也是可以动态添加和修改的def __init__(self, name, age):
self.name = name
self.age = age查看全部
举报