编程术语和定义(python)

2024-07-03 01:43:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些帮助来定义某些术语。我已经编写了几个月的程序(python和JavaScript),但是在理解一些编程术语时仍然有些困难

这就是我现在的工作:

from datetime import datetime
now = datetime.now()
month1 = now.month
year1 = now.year
day1 = now.day
print "%s/%s/%s" % (month1, year1, day1)

它非常直截了当,易于执行和理解,但我不知道什么是类、函数和方法。每次我用谷歌搜索一个答案,通常都是一些大的定义,用了更多我不懂的编程词。我需要一些基本的定义和更好的一些例子。我不喜欢问这种问题,任何帮助都将不胜感激。谢谢。在


Tags: fromimport程序datetime定义编程javascriptyear
3条回答

函数是一种可以执行某些操作和/或返回结果的东西,这取决于调用函数时使用的参数。在

如何制作和使用函数:

def function(foo):
    ...

result = function("bar")

你问过一个类,但我先解释一个对象。在

一个对象包含一些数据并且可以做一些事情。它可以做的是函数,与对象相关联的函数特别称为方法。除了参数之外,方法的行为可以,而且通常依赖于对象的数据,并且可以更新数据。在某些编程语言中,不能直接访问对象中的数据,也不能直接访问其中的一些数据,而不能直接访问所有对象中的数据;您只能要求对象执行它所做的事情,并且它可能提供也可能不提供设置其数据值的功能之一。然而,在Python中,您可以直接访问数据,但是有些人仍然认为不这样做是很好的做法。在

类是一组对象,它们具有相同类型的数据和相同的一组对象。它还提供了创建该类的新对象的起点。在

如何使用方法生成类:

^{pr2}$

如何创建类的对象:

f = Foo()

如何调用对象的方法:

f.method(argument)

如果您定义自己的类、实例、方法和函数,那么您可能更容易理解所有内容。在

class Car(object):
    def set_odometer(self, miles):
        self.miles = miles
    def get_odometer(self):
        return self.miles
    def drive(self, miles):
        self.miles += miles

def joyride(stolen_car):
    stolen_car.drive(100)
    print 'Insert Yello song here'

new_car = Car()
new_car.set_odometer(0)
print 'Now it has', new_car.get_odometer(), 'miles!'
joyride(new_car)
print 'Now it has', new_car.get_odometer(), 'miles!'

所以:

Car是一个类。类定义一个新类型。就像int定义整数,str定义字符串一样,Car定义了一种新的东西,你可以drive(并对其执行其他操作)。在

每次创建Car类的新实例时,它都是一个对象。例如,new_carCar的实例。也就是说,这是一个你可以drive(以及做其他事情)的事情。在

Car.driveCar类的一个方法。这意味着new_car.drivenew_car实例的一个方法。注意drive定义中的self参数。当您调用new_car.set_odometer(100)时,self参数引用new_car。在

joyride是一个函数。它不是任何类的一部分,并且它没有self参数。这是方法和函数之间唯一的区别。在

(实际上,在Python中,方法只是将函数和实例放在一起的一种方式。例如,new_car.drive.im_selfnew_car。但别担心。)

请注意,joyride内部,stolen_car是您在本例中传递的同一个对象,new_car。所以,你可以调用stolen_car.drive(),它在驱动new_car。在

在实际代码中,您通常不必费心使用set_odometerget_odometer等方法,因为您可以像访问方法一样轻松地访问数据属性,也就是成员,比如miles

^{pr2}$

但是,您经常在一个特殊的__init__方法中为属性设置初始值。例如:

class Car(object):
    def __init__(self):
        self.miles = 0
    def drive(self, miles):
        self.miles += miles

def joyride(stolen_car):
    stolen_car.drive(100)
    print 'Insert Yello song here'

new_car = Car()
print 'Now it has', new_car.get_odometer(), 'miles!'
joyride(new_car)
print 'Now it has', new_car.get_odometer(), 'miles!'

那么,这如何适用于你的例子呢?在

你的例子有点让人困惑。你根本不调用任何普通的实例方法。但让我们一步一步来。在

from datetime import datetime

datetime是一个类。你怎么知道的?好吧,您可以查看datetime模块中的代码,但更简单的是,只需打印它:

>>> from datetime import datetime
>>> print datetime
<type 'datetime.datetime'>

松散地说,a typeclass是一回事。(实际上,type可以用定制的C代码编写,而不是使用class等等,所以这并不完全正确,但已经足够接近了。)

now = datetime.now()

datetime.now是一种称为classmethod的特殊类型的东西。普通方法只能在实例上调用,但类方法只能在类上调用。暂时不要担心这个。重要的是它返回的是一个对象,一个datetime类型的实例。同样,您可以通过打印出它的type进行测试:

>>> now = datetime.now()
>>> print type(d)
<type 'datetime.datetime'>

然后访问对象的一些数据属性:

month1 = now.month
year1 = now.year
day1 = now.day

这些属性是通过now方法设置的,这与普通类在其__init__方法中设置属性的方式大致相同。在

def thisIsAFunction(inputNumber):
     oneMore= inputNumber+ 1
     return oneMore

这是一个函数,它返回比输入数字多1个的值。在

所以在以后的代码中你会这样称呼它

^{pr2}$

然后当您想:print anotherVariable时,它将打印6

类是相似的,但更广泛和更具包容性

class thisIsaClass:
     someVar = 1
     def __init__(self, inputNumber):
           self.inputNumber = inputNumber

这只是定义了一个名为“thisIsaClass”的对象。。。。创建对象。。。。在

>>> a = thisIsaClass(1) #creating one 'thisisaclass' object called a
>>> b = thisIsaClass(2) #another called b
>>>
>>> a.inputNumber # getting inputnumber from a
1
>>> b.inputNumber
2
>>> a.someVar #someVar doesnt have 'self' in front of it so its not referring to its own someVar, its referring to its classes someVar
1
>>> b.someVar
1
>>> thisIsaClass.someVar = 3 
>>> a.someVar #see? it changed it for all of th someVars
3
>>> b.someVar #because its the same someVar
3
>>> thisIsaClass.inputNumber #and THIS one doesnt actually have a "inputNumber" because it only belongs to the actual objects
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class thisIsaClass has no attribute 'inputNumber'

如果这让人困惑,那么看待一个类的最好方法就是将它与人联系起来。在

class human:
     def __init__(self, name, height, age):
          self.name = name
          self.height = height
          self.age = age


beth = human('beth','64 inches', 19)
beth.age
19

__init__是一个方法,因为它是类中的一个定义。(老实说,我不知道为什么叫这个。。。如果我们要在init-like下面定义另一个函数(但是它在一个类中,所以它是一个方法lol)

    def birthday(self):
        self.age = self.age+1

每次我们想给贝丝过生日,我们都会打字

beth.birthday()
beth.age
20

相关问题 更多 >