Skip to content

Commit 15328f3

Browse files
committed
some changes
1 parent c6969cf commit 15328f3

File tree

22 files changed

+874
-38
lines changed

22 files changed

+874
-38
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ __pycache__/
55
# Video Scripts
66
s.txt
77
script.txt
8+
9+
.venv/

Generators/people.py

+15-15
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,28 @@
22
import random
33
import time
44

5-
names = ['John', 'Corey', 'Adam', 'Steve', 'Rick', 'Thomas']
6-
majors = ['Math', 'Engineering', 'CompSci', 'Arts', 'Business']
5+
names = ["John", "Corey", "Adam", "Steve", "Rick", "Thomas"]
6+
majors = ["Math", "Engineering", "CompSci", "Arts", "Business"]
7+
8+
# print 'Memory (Before): {}Mb'.format(mem_profile.memory_usage_psutil())
9+
10+
print(mem_profile.memory_usage_psutil())
711

8-
print 'Memory (Before): {}Mb'.format(mem_profile.memory_usage_psutil())
912

1013
def people_list(num_people):
1114
result = []
1215
for i in xrange(num_people):
13-
person = {
14-
'id': i,
15-
'name': random.choice(names),
16-
'major': random.choice(majors)
17-
}
16+
person = {"id": i, "name": random.choice(names), "major": random.choice(majors)}
1817
result.append(person)
1918
return result
2019

20+
2121
def people_generator(num_people):
2222
for i in xrange(num_people):
23-
person = {
24-
'id': i,
25-
'name': random.choice(names),
26-
'major': random.choice(majors)
27-
}
23+
person = {"id": i, "name": random.choice(names), "major": random.choice(majors)}
2824
yield person
2925

26+
3027
# t1 = time.clock()
3128
# people = people_list(1000000)
3229
# t2 = time.clock()
@@ -35,5 +32,8 @@ def people_generator(num_people):
3532
people = people_generator(1000000)
3633
t2 = time.clock()
3734

38-
print 'Memory (After) : {}Mb'.format(mem_profile.memory_usage_psutil())
39-
print 'Took {} Seconds'.format(t2-t1)
35+
# print 'Memory (After) : {}Mb'.format(mem_profile.memory_usage_psutil())
36+
37+
print(mem_profile.memory_usage_psutil())
38+
39+
# print 'Took {} Seconds'.format(t2-t1)

Generators/square_nums_1.py

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
def square_numbers(nums):
2+
result = []
3+
for i in nums:
4+
result.append(i * i)
5+
return result
6+
7+
8+
my_nums = square_numbers([1, 2, 3, 4, 5])
9+
10+
print(my_nums)
11+
12+
13+
def square_numbers_generator(nums):
14+
for i in nums:
15+
yield (i * i) # yield is a return statement that returns a generator
16+
17+
18+
my_nums = square_numbers_generator([1, 2, 3, 4, 5])
19+
20+
# because it's a generator, it's not stored in memory, it's stored in a special object that generates values on the fly
21+
print(my_nums) # <generator object square_numbers_generator at 0x0000022B1778F9D0>
22+
23+
print(next(my_nums)) # 1
24+
25+
print("*" * 20)
26+
27+
for num in my_nums: # it start from 4, not 1
28+
print(num)
29+
30+
for num in my_nums:
31+
print(num)
32+
33+
print("*" * 20)
34+
35+
36+
# list comprehension
37+
my_nums = [x * x for x in [1, 2, 3, 4, 5]]
38+
print(my_nums)
39+
40+
# generator expression, replace the square brackets with parentheses
41+
my_nums = (x * x for x in [1, 2, 3, 4, 5])
42+
43+
print(list(my_nums), "lol")
44+
45+
# generator expression is more memory efficient than list comprehension
46+
# it wont print, because it only generate once
47+
for num in my_nums:
48+
print(num)
49+
50+
# print(next(my_nums)) # won't work, it only generate once
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Employee:
2+
pass
3+
4+
5+
emp_1 = Employee()
6+
emp_2 = Employee()
7+
8+
print(emp_1)
9+
print(emp_2)
10+
11+
# instance variables
12+
emp_1.first = "Corey"
13+
emp_1.last = "Schafer"
14+
emp_1.email = "[email protected]"
15+
emp_1.pay = 50000
16+
17+
emp_2.first = "Test"
18+
emp_2.last = "Employee"
19+
emp_2.email = "[email protected]"
20+
emp_2.pay = 60000
21+
22+
print(emp_1.email)
23+
print(emp_2.email)
+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
class Employee:
2+
# class variable is shared among all instances of a class
3+
num_of_emps = 0
4+
raise_amount = 1.04
5+
6+
def __init__(self, first, last, pay):
7+
self.first = first # instance variable
8+
self.last = last
9+
self.pay = pay
10+
self.email = first + "." + last + "@company.com"
11+
Employee.num_of_emps += 1
12+
13+
def fullname(self):
14+
return "{} {}".format(self.first, self.last)
15+
16+
def apply_raise(self):
17+
# both are valid
18+
self.pay = int(self.pay * self.raise_amount)
19+
# self.pay = int(self.pay * Employee.raise_amount)
20+
21+
22+
# better than opp_1.py
23+
emp_1 = Employee("Corey", "Schafer", 50000)
24+
emp_2 = Employee("Test", "Employee", 60000)
25+
26+
print(emp_1.email)
27+
print(emp_2.email)
28+
29+
# emp_1 is instance
30+
print(emp_1.fullname()) # dont need to pass emp_1 in, it automatically does that
31+
print(Employee.fullname(emp_1)) # self is emp_1
32+
33+
print(emp_1.pay)
34+
emp_1.apply_raise()
35+
print(emp_1.pay)
36+
37+
print(Employee.raise_amount)
38+
print(emp_1.raise_amount)
39+
print(emp_2.raise_amount)
40+
41+
print(emp_1.__dict__)
42+
print(Employee.__dict__)
43+
44+
Employee.raise_amount = 1.05
45+
print(Employee.raise_amount)
46+
print(emp_1.raise_amount)
47+
print(emp_2.raise_amount)
48+
49+
print("*" * 20)
50+
51+
emp_1.raise_amount = 1.06
52+
print(Employee.raise_amount)
53+
print(emp_1.raise_amount)
54+
print(emp_2.raise_amount)
55+
56+
print("*" * 20)
57+
58+
print(Employee.num_of_emps)
+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import datetime
2+
3+
4+
class Employee:
5+
# class variable is shared among all instances of a class
6+
num_of_emps = 0
7+
raise_amount = 1.04
8+
9+
def __init__(self, first, last, pay):
10+
self.first = first # instance variable
11+
self.last = last
12+
self.pay = pay
13+
self.email = first + "." + last + "@company.com"
14+
Employee.num_of_emps += 1
15+
16+
# instance method
17+
def fullname(self):
18+
return "{} {}".format(self.first, self.last)
19+
20+
# self is instance
21+
def apply_raise(self):
22+
# both are valid
23+
self.pay = int(self.pay * self.raise_amount)
24+
# self.pay = int(self.pay * Employee.raise_amount)
25+
26+
def __repr__(self):
27+
return "Employee('{}', '{}', '{}')".format(self.first, self.last, self.pay)
28+
29+
def __str__(self):
30+
return "{} - {}".format(self.fullname(), self.email)
31+
32+
# cls is Employee
33+
@classmethod
34+
def set_raise_amount(cls, amount):
35+
cls.raise_amount = amount
36+
37+
# alternative constructor
38+
@classmethod
39+
def from_string(cls, emp_str):
40+
first, last, pay = emp_str.split("-")
41+
# Employee("Corey", "Schafer", 50000) is the same as cls(first, last, pay)!!
42+
return cls(first, last, pay)
43+
44+
@staticmethod
45+
def is_workday(day):
46+
if day.weekday() == 5 or day.weekday() == 6:
47+
return False
48+
return True
49+
50+
51+
emp_1 = Employee("Corey", "Schafer", 50000)
52+
emp_2 = Employee("Test", "Employee", 60000)
53+
54+
55+
Employee.set_raise_amount(1.05)
56+
57+
58+
Employee.raise_amount = 1.06
59+
60+
emp_1.set_raise_amount(1.07)
61+
62+
print(Employee.raise_amount)
63+
print(emp_1.raise_amount)
64+
print(emp_2.raise_amount)
65+
66+
emp_str_1 = "John-Doe-70000"
67+
emp_str_2 = "Steve-Smith-30000"
68+
emp_str_3 = "Jane-Doe-90000"
69+
70+
first, last, pay = emp_str_1.split("-")
71+
72+
new_emp_1 = Employee(first, last, pay)
73+
74+
print(new_emp_1)
75+
76+
new_emp_2 = Employee.from_string(emp_str_2)
77+
78+
print(new_emp_2)
79+
80+
81+
my_date = datetime.date(2024, 7, 10)
82+
83+
print(Employee.is_workday(my_date))
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import datetime
2+
3+
4+
class Employee:
5+
6+
raise_amount = 1.04
7+
num_of_emps = 0
8+
9+
def __init__(self, first, last, pay):
10+
self.first = first # instance variable
11+
self.last = last
12+
self.pay = pay
13+
self.email = first + "." + last + "@company.com"
14+
Employee.num_of_emps += 1
15+
16+
# instance method
17+
def fullname(self):
18+
return "{} {}".format(self.first, self.last)
19+
20+
# self is instance
21+
def apply_raise(self):
22+
# both are valid
23+
self.pay = int(self.pay * self.raise_amount)
24+
# self.pay = int(self.pay * Employee.raise_amount)
25+
26+
# self is mandatory
27+
def hello(self):
28+
print("hello world")
29+
30+
31+
emp_1 = Employee("Corey", "Schafer", 50000)
32+
33+
emp_1.hello()
+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
class Employee:
2+
3+
raise_amt = 1.04
4+
5+
def __init__(self, first, last, pay):
6+
self.first = first
7+
self.last = last
8+
self.email = first + "." + last + "@email.com"
9+
self.pay = pay
10+
11+
def fullname(self):
12+
return "{} {}".format(self.first, self.last)
13+
14+
def apply_raise(self):
15+
self.pay = int(self.pay * self.raise_amt)
16+
17+
18+
class Developer(Employee):
19+
raise_amt = 1.10
20+
21+
def __init__(self, first, last, pay, prog_lang):
22+
super().__init__(first, last, pay)
23+
self.prog_lang = prog_lang
24+
25+
26+
class Manager(Employee):
27+
28+
def __init__(self, first, last, pay, employees=None):
29+
super().__init__(first, last, pay)
30+
if employees is None:
31+
self.employees = []
32+
else:
33+
self.employees = employees
34+
35+
def add_emp(self, emp):
36+
if emp not in self.employees:
37+
self.employees.append(emp)
38+
39+
def remove_emp(self, emp):
40+
if emp in self.employees:
41+
self.employees.remove(emp)
42+
43+
def print_emps(self):
44+
for emp in self.employees:
45+
print("-->", emp.fullname())
46+
47+
48+
# print(help(Developer))
49+
50+
51+
dev_1 = Developer("Corey", "Schafer", 50000, "Python")
52+
dev_2 = Developer("Test", "Employee", 60000, "Java")
53+
54+
print(dev_1.email)
55+
print(dev_2.email)
56+
print(dev_1.prog_lang)
57+
print(dev_2.prog_lang)
58+
59+
60+
print(dev_1.raise_amt)
61+
dev_1.apply_raise()
62+
print(dev_1.pay)
63+
64+
mgr_1 = Manager("Sue", "Smith", 90000, [dev_1])
65+
66+
print(mgr_1.email)
67+
68+
mgr_1.add_emp(dev_2)
69+
mgr_1.remove_emp(dev_2)
70+
71+
mgr_1.print_emps()
72+
73+
print(isinstance(mgr_1, Manager))
74+
print(isinstance(mgr_1, Employee))
75+
print(isinstance(mgr_1, Developer))
76+
77+
print(issubclass(Manager, Employee))
78+
print(issubclass(Manager, Developer))

0 commit comments

Comments
 (0)