hhzczy 发表于 2018-11-30 21:01:03

python,关于类和对象的问题

本帖最后由 hhzczy 于 2018-11-30 21:26 编辑

class User():

    def __init__(self, first_name, last_name, username, email):
      self.first_name = first_name
      self.last_name = last_name
      self.username = username
      self.email = email
      self.title = self.first_name.title() + self.last_name.title()

    def describe_user(self):
      print(self.title)
      print('Username: ' + self.username)
      print('Email: ' + self.email)

    def greet_user(self):
      print('Welcome ' + self.title + '.')

user1 = User('xueyou', 'zhang', 'ZhangGeShen', 'zxy@123.com')
user1.describe_user()
user1.greet_user()

本楼上边代码已经修改正确,问题已经解决。感谢楼下各位的回复指正

塔利班 发表于 2018-11-30 21:04:23

本帖最后由 塔利班 于 2018-11-30 21:07 编辑

1,你的函数都没有加self,那就不是实例对象的函数
2 你可以定义个属性self.title=self.firstname.title() + self.last.name.title()
   然后其他调用self.title就行了

冬雪雪冬 发表于 2018-11-30 21:07:15

小错误不少,改正的:
class User():

    def __init__(self, first_name, last_name, username, email):
      self.firstname = first_name
      self.lastname = last_name
      self.username = username
      self.email = email

    def describe_user(self):
      print(self.firstname.title() + self.lastname.title())#可以合并吗?
      print('Username: ' + self.username)
      print('Email: ' + self.email)

    def greet_user(self):
      print('Welcome ' + self.firstname.title() + self.lastname.title() + '.')   #可以合并吗?

user1 = User('学友', '张', 'ZhangGeShen', 'zxy@123.com')
user1.describe_user()   #这行报错 TypeError: describe_user() takes 0 positional arguments but 1 was given
user1.greet_user()


假设这是一行很复杂的代码,我想精简一下合并在一起(比如:在一个方法里写,另一个方法里直接调用,不必重复),如果可以该怎么写?
---写成函数

hhzczy 发表于 2018-11-30 21:12:03

冬雪雪冬 发表于 2018-11-30 21:07
小错误不少,改正的:




感谢,帖子发出去,我就发现错误了。之前看了半天也没发现,很苦恼。
还是不太熟练。

一楼的帖子我已经修正过了,可以正常运行。
可否劳烦写个函数的范例。

我刚刚对类稍微理出一点点头绪(还有点浆糊)。在类里再加上函数就不知道怎么写了。望提示

冬雪雪冬 发表于 2018-11-30 21:17:54

hhzczy 发表于 2018-11-30 21:12
感谢,帖子发出去,我就发现错误了。之前看了半天也没发现,很苦恼。
还是不太熟练。



类中的函数,与其他函数没有什么差别,就是注意两点:
1.函数参数加self
2.变量名加self.

hhzczy 发表于 2018-11-30 21:23:40

塔利班 发表于 2018-11-30 21:04
1,你的函数都没有加self,那就不是实例对象的函数
2 你可以定义个属性self.title=self.firstname.title() ...

非常感谢,问题已经解决。
页: [1]
查看完整版本: python,关于类和对象的问题